Clean repo for open source release
Remove build artifacts, dev tool configs, unused dependencies, and third-party source dumps. Add proper README, update .gitignore, clean up Makefile.
This commit is contained in:
87
src/main/java/com/tiedup/remake/compat/mca/MCAHandler.java
Normal file
87
src/main/java/com/tiedup/remake/compat/mca/MCAHandler.java
Normal file
@@ -0,0 +1,87 @@
|
||||
package com.tiedup.remake.compat.mca;
|
||||
|
||||
import com.tiedup.remake.compat.mca.capability.MCAKidnappedAdapter;
|
||||
import com.tiedup.remake.core.TiedUpMod;
|
||||
import com.tiedup.remake.state.IRestrainable;
|
||||
import net.minecraft.client.model.HumanoidModel;
|
||||
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.event.EntityRenderersEvent;
|
||||
|
||||
/**
|
||||
* MCA Handler using reflection to avoid compilation issues with obfuscated jars.
|
||||
*/
|
||||
public class MCAHandler {
|
||||
|
||||
private static Class<?> villagerLikeClass;
|
||||
private static Class<?> villagerEntityClass;
|
||||
|
||||
public static void init() {
|
||||
try {
|
||||
// MCA Forge uses "forge.net.mca" package prefix
|
||||
villagerLikeClass = Class.forName(
|
||||
"forge.net.mca.entity.VillagerLike"
|
||||
);
|
||||
villagerEntityClass = Class.forName(
|
||||
"forge.net.mca.entity.VillagerEntityMCA"
|
||||
);
|
||||
TiedUpMod.LOGGER.info(
|
||||
"[MCA Compat] Handler initialized successfully via reflection"
|
||||
);
|
||||
} catch (ClassNotFoundException e) {
|
||||
TiedUpMod.LOGGER.error(
|
||||
"[MCA Compat] Failed to load MCA classes via reflection",
|
||||
e
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isMCAVillager(Entity entity) {
|
||||
if (entity == null) return false;
|
||||
|
||||
// 1. Check loaded classes via reflection
|
||||
if (
|
||||
villagerLikeClass != null && villagerLikeClass.isInstance(entity)
|
||||
) return true;
|
||||
if (
|
||||
villagerEntityClass != null &&
|
||||
villagerEntityClass.isInstance(entity)
|
||||
) return true;
|
||||
|
||||
// 2. Check EntityType namespace (fallback if classes not found/loaded)
|
||||
net.minecraft.resources.ResourceLocation typeId =
|
||||
net.minecraftforge.registries.ForgeRegistries.ENTITY_TYPES.getKey(
|
||||
entity.getType()
|
||||
);
|
||||
if (typeId != null && "mca".equals(typeId.getNamespace())) {
|
||||
String path = typeId.getPath();
|
||||
if (path.contains("villager")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Check class name string (ultimate fallback)
|
||||
String className = entity.getClass().getName();
|
||||
return className.contains("mca") && className.contains("Villager");
|
||||
}
|
||||
|
||||
public static IRestrainable getKidnappedState(LivingEntity entity) {
|
||||
if (!isMCAVillager(entity)) return null;
|
||||
|
||||
return entity
|
||||
.getCapability(MCACompat.MCA_KIDNAPPED)
|
||||
.map(cap -> new MCAKidnappedAdapter(entity, cap))
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public static void addBondageLayer(
|
||||
LivingEntityRenderer<?, ?> renderer,
|
||||
EntityRenderersEvent.AddLayers event
|
||||
) {
|
||||
// V1 MCA bondage render layer removed — V2 render layer handles MCA villagers
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user