Obfuscate Support

This commit is contained in:
Tschipp 2018-12-05 18:48:38 +01:00
parent d3fb8efb45
commit cb5edc3061
14 changed files with 323 additions and 96 deletions

2
.gitignore vendored
View File

@ -21,3 +21,5 @@ build
# other # other
eclipse eclipse
run run
gradle\.properties

View File

@ -35,6 +35,8 @@ repositories {
maven { url 'http://maven.epoxide.org' } maven { url 'http://maven.epoxide.org' }
maven { url = "https://mrcrayfish.com/maven" }
} }
@ -43,6 +45,8 @@ dependencies {
// deobfCompile "net.darkhax.gamestages:GameStages-1.12.2:2.0.91" // deobfCompile "net.darkhax.gamestages:GameStages-1.12.2:2.0.91"
compile "com.mrcrayfish:obfuscate:0.2.6-1.12.2"
} }
processResources { processResources {
@ -60,3 +64,25 @@ processResources {
exclude 'mcmod.info' exclude 'mcmod.info'
} }
} }
task signJar(type: SignJar, dependsOn: reobfJar) {
// Skips if the keyStore property is missing.
onlyIf {
project.hasProperty('keyStore')
}
// findProperty allows us to reference the property without it existing.
// Using project.propName would cause the script to fail validation if
// the property did not exist.
keyStore = project.findProperty('keyStore')
alias = project.findProperty('keyStoreAlias')
storePass = project.findProperty('keyStorePass')
keyPass = project.findProperty('keyStoreKeyPass')
inputFile = jar.archivePath
outputFile = jar.archivePath
}
// Runs this task automatically when build is ran.
build.dependsOn signJar

View File

@ -1,3 +0,0 @@
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
# This is required to provide enough memory for the Minecraft decompilation process.
org.gradle.jvmargs=-Xmx3G

View File

@ -1,16 +1,16 @@
package tschipp.carryon; package tschipp.carryon;
import java.io.File; import java.io.File;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import net.minecraft.client.Minecraft;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLFingerprintViolationEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
@ -21,7 +21,7 @@ import tschipp.carryon.common.command.CommandCarryOn;
import tschipp.carryon.common.command.CommandCarryOnReload; import tschipp.carryon.common.command.CommandCarryOnReload;
@EventBusSubscriber @EventBusSubscriber
@Mod(modid = CarryOn.MODID, name = CarryOn.NAME, version = CarryOn.VERSION, guiFactory = "tschipp.carryon.client.gui.GuiFactoryCarryOn", dependencies = CarryOn.DEPENDENCIES, updateJSON = CarryOn.UPDATE_JSON, acceptedMinecraftVersions = CarryOn.ACCEPTED_VERSIONS) @Mod(modid = CarryOn.MODID, name = CarryOn.NAME, version = CarryOn.VERSION, guiFactory = "tschipp.carryon.client.gui.GuiFactoryCarryOn", dependencies = CarryOn.DEPENDENCIES, updateJSON = CarryOn.UPDATE_JSON, acceptedMinecraftVersions = CarryOn.ACCEPTED_VERSIONS, certificateFingerprint = CarryOn.CERTIFICATE_FINGERPRINT)
public class CarryOn { public class CarryOn {
@SidedProxy(clientSide = "tschipp.carryon.client.ClientProxy", serverSide = "tschipp.carryon.common.CommonProxy") @SidedProxy(clientSide = "tschipp.carryon.client.ClientProxy", serverSide = "tschipp.carryon.common.CommonProxy")
@ -32,12 +32,13 @@ public class CarryOn {
public static CarryOn instance; public static CarryOn instance;
public static final String MODID = "carryon"; public static final String MODID = "carryon";
public static final String VERSION = "1.11.1"; public static final String VERSION = "1.12";
public static final String NAME = "Carry On"; public static final String NAME = "Carry On";
public static final String ACCEPTED_VERSIONS = "[1.12.2,1.13)"; public static final String ACCEPTED_VERSIONS = "[1.12.2,1.13)";
public static final String UPDATE_JSON = "https://gist.githubusercontent.com/Tschipp/dccadee7c90d7a34e6e76a35d9d6fa2e/raw/"; public static final String UPDATE_JSON = "https://gist.githubusercontent.com/Tschipp/dccadee7c90d7a34e6e76a35d9d6fa2e/raw/";
public static final Logger LOGGER = LogManager.getFormatterLogger("CarryOn"); public static final Logger LOGGER = LogManager.getFormatterLogger("CarryOn");
public static final String DEPENDENCIES = "required-after:forge@[13.20.1.2386,);after:gamestages;"; public static final String DEPENDENCIES = "required-after:forge@[13.20.1.2386,);after:gamestages;";
public static final String CERTIFICATE_FINGERPRINT = "55e88f24d04398481ae6f1ce76f65fd776f14227";
public static File CONFIGURATION_FILE; public static File CONFIGURATION_FILE;
public static SimpleNetworkWrapper network; public static SimpleNetworkWrapper network;
@ -64,6 +65,10 @@ public class CarryOn {
event.registerServerCommand(new CommandCarryOnReload()); event.registerServerCommand(new CommandCarryOnReload());
} }
@EventHandler
public void onFingerprintViolation(FMLFingerprintViolationEvent event) {
LOGGER.error("WARNING! Invalid fingerprint detected! The file " + event.getSource().getName() + " may have been tampered with! If you didn't download the file from https://minecraft.curseforge.com/projects/carry-on or through any kind of mod launcher, immediately delete the file and re-download it from https://minecraft.curseforge.com/projects/carry-on");
}
} }

View File

@ -447,12 +447,17 @@ public class RenderEvents
@SubscribeEvent(priority = EventPriority.HIGH) @SubscribeEvent(priority = EventPriority.HIGH)
public void onEvent(RenderPlayerEvent.Post event) public void onEvent(RenderPlayerEvent.Post event)
{ {
if (handleMobends()) if(!CarryOnConfig.settings.renderArms)
return;
if (handleMobends() && !Loader.isModLoaded("obfuscate"))
{ {
EntityPlayer player = event.getEntityPlayer(); EntityPlayer player = event.getEntityPlayer();
EntityPlayerSP clientPlayer = Minecraft.getMinecraft().player; EntityPlayerSP clientPlayer = Minecraft.getMinecraft().player;
float partialticks = event.getPartialRenderTick(); float partialticks = event.getPartialRenderTick();
RenderPlayer render = event.getRenderer();
ItemStack stack = player.getHeldItemMainhand(); ItemStack stack = player.getHeldItemMainhand();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack) || stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack)) if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack) || stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack))
{ {
@ -539,7 +544,10 @@ public class RenderEvents
@SubscribeEvent(priority = EventPriority.NORMAL) @SubscribeEvent(priority = EventPriority.NORMAL)
public void onEvent(RenderPlayerEvent.Pre event) public void onEvent(RenderPlayerEvent.Pre event)
{ {
if (handleMobends()) if(!CarryOnConfig.settings.renderArms)
return;
if (handleMobends() && !Loader.isModLoaded("obfuscate"))
{ {
EntityPlayer player = event.getEntityPlayer(); EntityPlayer player = event.getEntityPlayer();
ItemStack stack = player.getHeldItemMainhand(); ItemStack stack = player.getHeldItemMainhand();

View File

@ -1,23 +0,0 @@
package tschipp.carryon.client.model;
import net.minecraft.client.model.ModelPlayer;
import net.minecraft.entity.Entity;
public class ModelPlayerCarrying extends ModelPlayer
{
public ModelPlayerCarrying(float modelSize, boolean smallArmsIn)
{
super(modelSize, smallArmsIn);
}
@Override
public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn)
{
super.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor, entityIn);
}
}

View File

@ -55,6 +55,9 @@ public class Configs {
@Comment("Use Whitelist instead of Blacklist for Entities") @Comment("Use Whitelist instead of Blacklist for Entities")
public boolean useWhitelistEntities=false; public boolean useWhitelistEntities=false;
@Comment("Use Whitelist instead of Blacklist for Stacking")
public boolean useWhitelistStacking=false;
@Comment("Whether the player can hit blocks and entities while carrying or not") @Comment("Whether the player can hit blocks and entities while carrying or not")
public boolean hitWhileCarrying=false; public boolean hitWhileCarrying=false;
@ -78,22 +81,24 @@ public class Configs {
public static class WhiteList public static class WhiteList
{ {
@Config.RequiresMcRestart()
@Comment("Entities that CAN be picked up") @Comment("Entities that CAN be picked up")
public String[] allowedEntities=new String[] public String[] allowedEntities=new String[]
{ {
}; };
@Config.RequiresMcRestart()
@Comment("Blocks that CAN be picked up") @Comment("Blocks that CAN be picked up")
public String[] allowedBlocks=new String[] public String[] allowedBlocks=new String[]
{ {
}; };
@Comment("Entities that CAN have other entities stacked on top of them")
public String[] allowedStacking = new String[]
{
};
} }
public static class Blacklist public static class Blacklist
{ {
@Config.RequiresMcRestart()
@Comment("Tile Entities that cannot be picked up") @Comment("Tile Entities that cannot be picked up")
public String[] forbiddenTiles = new String[] public String[] forbiddenTiles = new String[]
{ {
@ -169,11 +174,11 @@ public class Configs {
"practicallogistics2:*", "practicallogistics2:*",
"mcmultipart:*", "mcmultipart:*",
"enderstorage:*", "enderstorage:*",
"betterstorage:*" "betterstorage:*",
"practicallogistics2:*"
}; };
@Config.RequiresMcRestart()
@Comment("Entities that cannot be picked up") @Comment("Entities that cannot be picked up")
public String[] forbiddenEntities = new String[] public String[] forbiddenEntities = new String[]
{ {
@ -195,11 +200,17 @@ public class Configs {
"mynko:*" "mynko:*"
}; };
@Comment("Entities that cannot have other entities stacked on top of them")
public String[] forbiddenStacking = new String[]
{
"minecraft:horse"
};
} }
public static class ModelOverrides public static class ModelOverrides
{ {
@Config.RequiresMcRestart()
@Comment("Model Overrides based on NBT or on Meta. Advanced Users Only!") @Comment("Model Overrides based on NBT or on Meta. Advanced Users Only!")
public String[] modelOverrides = new String[] public String[] modelOverrides = new String[]
{ {
@ -217,6 +228,9 @@ public class Configs {
"minecraft:leaves2->(item)minecraft:leaves2", "minecraft:leaves2->(item)minecraft:leaves2",
"minecraft:reeds->(block)minecraft:reeds", "minecraft:reeds->(block)minecraft:reeds",
"minecraft:daylight_detector_inverted->minecraft:daylight_detector", "minecraft:daylight_detector_inverted->minecraft:daylight_detector",
"minecraft:standing_sign->(item)minecraft:sign",
"minecraft:wall_sign->(item)minecraft:sign",
"minecraft:redstone_wire->(item)minecraft:redstone",
"quark:custom_chest{type:\"spruce\"}->quark:custom_chest;0", "quark:custom_chest{type:\"spruce\"}->quark:custom_chest;0",
"quark:custom_chest{type:\"birch\"}->quark:custom_chest;1", "quark:custom_chest{type:\"birch\"}->quark:custom_chest;1",
"quark:custom_chest{type:\"jungle\"}->quark:custom_chest;2", "quark:custom_chest{type:\"jungle\"}->quark:custom_chest;2",
@ -264,7 +278,6 @@ public class Configs {
"animania:cheese_mold;8->(block)animania:cheese_mold;8", "animania:cheese_mold;8->(block)animania:cheese_mold;8",
"animania:cheese_mold;9->(block)animania:cheese_mold;9", "animania:cheese_mold;9->(block)animania:cheese_mold;9",
"animania:cheese_mold;10->(block)animania:cheese_mold;10", "animania:cheese_mold;10->(block)animania:cheese_mold;10",
}; };
} }

View File

@ -30,6 +30,7 @@ import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import tschipp.carryon.client.keybinds.CarryOnKeybinds; import tschipp.carryon.client.keybinds.CarryOnKeybinds;
import tschipp.carryon.common.config.CarryOnConfig; import tschipp.carryon.common.config.CarryOnConfig;
import tschipp.carryon.common.handler.ListHandler;
import tschipp.carryon.common.handler.PickupHandler; import tschipp.carryon.common.handler.PickupHandler;
import tschipp.carryon.common.handler.RegistrationHandler; import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.item.ItemEntity; import tschipp.carryon.common.item.ItemEntity;
@ -158,42 +159,46 @@ public class ItemEntityEvents
{ {
Entity topEntity = getTopPassenger(lowestEntity); Entity topEntity = getTopPassenger(lowestEntity);
double sizeEntity = topEntity.height * topEntity.width; if (CarryOnConfig.settings.useWhitelistStacking ? ListHandler.isStackingAllowed(topEntity) : !ListHandler.isStackingForbidden(topEntity))
if ((CarryOnConfig.settings.entitySizeMattersStacking && sizeHeldEntity <= sizeEntity) || !CarryOnConfig.settings.entitySizeMattersStacking)
{ {
if (topEntity instanceof EntityHorse) double sizeEntity = topEntity.height * topEntity.width;
if ((CarryOnConfig.settings.entitySizeMattersStacking && sizeHeldEntity <= sizeEntity) || !CarryOnConfig.settings.entitySizeMattersStacking)
{ {
EntityHorse horse = (EntityHorse) topEntity; if (topEntity instanceof EntityHorse)
horse.setHorseTamed(true); {
} EntityHorse horse = (EntityHorse) topEntity;
horse.setHorseTamed(true);
}
if (distance < 6) if (distance < 6)
{ {
double tempX = entity.posX; double tempX = entity.posX;
double tempY = entity.posY; double tempY = entity.posY;
double tempZ = entity.posZ; double tempZ = entity.posZ;
entityHeld.setPosition(tempX, tempY + 2.6, tempZ); entityHeld.setPosition(tempX, tempY + 2.6, tempZ);
world.spawnEntity(entityHeld); world.spawnEntity(entityHeld);
entityHeld.startRiding(topEntity, false); entityHeld.startRiding(topEntity, false);
entityHeld.setPositionAndUpdate(tempX, tempY, tempZ); entityHeld.setPositionAndUpdate(tempX, tempY, tempZ);
}
else
{
entityHeld.setPosition(entity.posX, entity.posY, entity.posZ);
world.spawnEntity(entityHeld);
entityHeld.startRiding(topEntity, false);
}
ItemEntity.clearEntityData(main);
player.setHeldItem(EnumHand.MAIN_HAND, ItemStack.EMPTY);
ItemEvents.sendPacket(player, 9, 0);
event.setCanceled(true);
event.setCancellationResult(EnumActionResult.FAIL);
world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_HORSE_SADDLE, SoundCategory.PLAYERS, 0.5F, 1.5F);
} }
else else
{ {
entityHeld.setPosition(entity.posX, entity.posY, entity.posZ); world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.BLOCK_NOTE_BASS, SoundCategory.PLAYERS, 0.5F, 1.5F);
world.spawnEntity(entityHeld); return;
entityHeld.startRiding(topEntity, false);
} }
ItemEntity.clearEntityData(main);
player.setHeldItem(EnumHand.MAIN_HAND, ItemStack.EMPTY);
ItemEvents.sendPacket(player, 9, 0);
event.setCanceled(true);
world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_HORSE_SADDLE, SoundCategory.PLAYERS, 0.5F, 1.5F);
}
else
{
world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.BLOCK_NOTE_BASS, SoundCategory.PLAYERS, 0.5F, 1.5F);
return;
} }
} }
else else

View File

@ -26,6 +26,8 @@ import net.minecraft.util.text.event.ClickEvent;
import net.minecraft.util.text.event.ClickEvent.Action; import net.minecraft.util.text.event.ClickEvent.Action;
import net.minecraft.world.GameRules; import net.minecraft.world.GameRules;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.config.Config;
import net.minecraftforge.common.config.ConfigManager;
import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
@ -36,6 +38,7 @@ import net.minecraftforge.event.entity.player.PlayerEvent.StartTracking;
import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent;
import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent; import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent;
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
import net.minecraftforge.fml.common.eventhandler.Event.Result; import net.minecraftforge.fml.common.eventhandler.Event.Result;
import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@ -47,6 +50,7 @@ import net.minecraftforge.items.IItemHandler;
import tschipp.carryon.CarryOn; import tschipp.carryon.CarryOn;
import tschipp.carryon.client.keybinds.CarryOnKeybinds; import tschipp.carryon.client.keybinds.CarryOnKeybinds;
import tschipp.carryon.common.config.CarryOnConfig; import tschipp.carryon.common.config.CarryOnConfig;
import tschipp.carryon.common.handler.ListHandler;
import tschipp.carryon.common.handler.PickupHandler; import tschipp.carryon.common.handler.PickupHandler;
import tschipp.carryon.common.handler.RegistrationHandler; import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.item.ItemEntity; import tschipp.carryon.common.item.ItemEntity;
@ -125,9 +129,8 @@ public class ItemEvents
eitem.setItem(ItemStack.EMPTY); eitem.setItem(ItemStack.EMPTY);
} }
BlockPos pos = new BlockPos(Math.floor(eitem.posX), Math.floor(eitem.posY), Math.floor(eitem.posZ)); BlockPos pos = new BlockPos(Math.floor(eitem.posX), Math.floor(eitem.posY), Math.floor(eitem.posZ));
if(positions.containsKey(pos)) if (positions.containsKey(pos))
{ {
event.setCanceled(true); event.setCanceled(true);
} }
@ -259,15 +262,14 @@ public class ItemEvents
} }
} }
@SubscribeEvent @SubscribeEvent
public void onWorldTick(TickEvent.WorldTickEvent event) public void onWorldTick(TickEvent.WorldTickEvent event)
{ {
for(Entry<BlockPos, Integer> entry : positions.entrySet()) for (Entry<BlockPos, Integer> entry : positions.entrySet())
{ {
entry.setValue(entry.getValue() + 1); entry.setValue(entry.getValue() + 1);
if(entry.getValue() > 3) if (entry.getValue() > 3)
positions.remove(entry.getKey()); positions.remove(entry.getKey());
} }
} }
@ -275,7 +277,7 @@ public class ItemEvents
@SubscribeEvent @SubscribeEvent
public void onDrop(HarvestDropsEvent event) public void onDrop(HarvestDropsEvent event)
{ {
if(positions.containsKey(event.getPos())) if (positions.containsKey(event.getPos()))
{ {
event.getDrops().clear(); event.getDrops().clear();
} }
@ -306,7 +308,6 @@ public class ItemEvents
{ {
player.closeScreen(); player.closeScreen();
if (ItemTile.storeTileData(te, world, pos, state.getActualState(world, pos), stack)) if (ItemTile.storeTileData(te, world, pos, state.getActualState(world, pos), stack))
{ {
@ -369,7 +370,6 @@ public class ItemEvents
player.getServer().getCommandManager().executeCommand(player.getServer(), "/execute " + player.getGameProfile().getName() + " ~ ~ ~ " + command); player.getServer().getCommandManager().executeCommand(player.getServer(), "/execute " + player.getGameProfile().getName() + " ~ ~ ~ " + command);
} }
} }
} }
} }
@ -500,6 +500,16 @@ public class ItemEvents
} }
} }
@SubscribeEvent
public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent event)
{
if (event.getModID().equals(CarryOn.MODID))
{
ListHandler.initLists();
ConfigManager.load(CarryOn.MODID, Config.Type.INSTANCE);
}
}
public int getSlot(EntityPlayer player, Item item) public int getSlot(EntityPlayer player, Item item)
{ {
for (int i = 0; i < player.inventory.getSizeInventory(); i++) for (int i = 0; i < player.inventory.getSizeInventory(); i++)

View File

@ -15,6 +15,8 @@ public class ListHandler
public static List<String> FORBIDDEN_ENTITIES; public static List<String> FORBIDDEN_ENTITIES;
public static List<String> ALLOWED_ENTITIES; public static List<String> ALLOWED_ENTITIES;
public static List<String> ALLOWED_TILES; public static List<String> ALLOWED_TILES;
public static List<String> FORBIDDEN_STACKING;
public static List<String> ALLOWED_STACKING;
public static boolean isForbidden(Block block) public static boolean isForbidden(Block block)
{ {
@ -45,6 +47,7 @@ public class ListHandler
boolean contains = FORBIDDEN_ENTITIES.contains(name); boolean contains = FORBIDDEN_ENTITIES.contains(name);
return contains; return contains;
} }
return true; return true;
} }
@ -59,6 +62,29 @@ public class ListHandler
return true; return true;
} }
public static boolean isStackingForbidden(Entity entity)
{
if (EntityList.getKey(entity) != null)
{
String name = EntityList.getKey(entity).toString();
boolean contains = FORBIDDEN_STACKING.contains(name);
return contains;
}
return true;
}
public static boolean isStackingAllowed(Entity entity)
{
if (EntityList.getKey(entity) != null)
{
String name = EntityList.getKey(entity).toString();
boolean contains = ALLOWED_STACKING.contains(name);
return contains;
}
return true;
}
public static boolean isAllowed(Block block) public static boolean isAllowed(Block block)
{ {
String name = block.getRegistryName().toString(); String name = block.getRegistryName().toString();
@ -80,7 +106,7 @@ public class ListHandler
} }
public static void initForbiddenTiles() public static void initLists()
{ {
String[] forbidden = CarryOnConfig.blacklist.forbiddenTiles; String[] forbidden = CarryOnConfig.blacklist.forbiddenTiles;
FORBIDDEN_TILES = new ArrayList<String>(); FORBIDDEN_TILES = new ArrayList<String>();
@ -133,6 +159,43 @@ public class ListHandler
{ {
ALLOWED_TILES.add(allowedBlocks[i]); ALLOWED_TILES.add(allowedBlocks[i]);
} }
String[] forbiddenStacking = CarryOnConfig.blacklist.forbiddenStacking;
FORBIDDEN_STACKING = new ArrayList<String>();
for (int i = 0; i < forbiddenStacking.length; i++)
{
if (forbiddenStacking[i].contains("*"))
{
String modid = forbiddenStacking[i].replace("*", "");
for (int k = 0; k < ForgeRegistries.ENTITIES.getKeys().size(); k++)
{
if (ForgeRegistries.ENTITIES.getKeys().toArray()[k].toString().contains(modid))
{
FORBIDDEN_STACKING.add(ForgeRegistries.ENTITIES.getKeys().toArray()[k].toString());
}
}
}
FORBIDDEN_STACKING.add(forbiddenStacking[i]);
}
String[] allowedStacking = CarryOnConfig.whitelist.allowedStacking;
ALLOWED_STACKING = new ArrayList<String>();
for (int i = 0; i < allowedStacking.length; i++)
{
if (allowedStacking[i].contains("*"))
{
String modid = allowedStacking[i].replace("*", "");
for (int k = 0; k < ForgeRegistries.ENTITIES.getKeys().size(); k++)
{
if (ForgeRegistries.ENTITIES.getKeys().toArray()[k].toString().contains(modid))
{
ALLOWED_STACKING.add(ForgeRegistries.ENTITIES.getKeys().toArray()[k].toString());
}
}
}
ALLOWED_STACKING.add(allowedStacking[i]);
}
} }
} }

View File

@ -5,6 +5,7 @@ import net.minecraft.item.Item;
import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.CapabilityManager; import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.fml.common.Loader;
import tschipp.carryon.CarryOn; import tschipp.carryon.CarryOn;
import tschipp.carryon.client.event.RenderEntityEvents; import tschipp.carryon.client.event.RenderEntityEvents;
import tschipp.carryon.client.event.RenderEvents; import tschipp.carryon.client.event.RenderEvents;
@ -17,6 +18,7 @@ import tschipp.carryon.common.event.ItemEntityEvents;
import tschipp.carryon.common.event.ItemEvents; import tschipp.carryon.common.event.ItemEvents;
import tschipp.carryon.common.item.ItemEntity; import tschipp.carryon.common.item.ItemEntity;
import tschipp.carryon.common.item.ItemTile; import tschipp.carryon.common.item.ItemTile;
import tschipp.carryon.compat.obfuscate.ObfuscateEvents;
public class RegistrationHandler public class RegistrationHandler
{ {
@ -47,13 +49,17 @@ public class RegistrationHandler
MinecraftForge.EVENT_BUS.register(new RenderEvents()); MinecraftForge.EVENT_BUS.register(new RenderEvents());
MinecraftForge.EVENT_BUS.register(new RenderEntityEvents()); MinecraftForge.EVENT_BUS.register(new RenderEntityEvents());
MinecraftForge.EVENT_BUS.register(new PositionClientEvents()); MinecraftForge.EVENT_BUS.register(new PositionClientEvents());
if(Loader.isModLoaded("obfuscate"))
MinecraftForge.EVENT_BUS.register(new ObfuscateEvents());
} }
public static void regOverrideList() public static void regOverrideList()
{ {
ModelOverridesHandler.initOverrides(); ModelOverridesHandler.initOverrides();
CustomPickupOverrideHandler.initPickupOverrides(); CustomPickupOverrideHandler.initPickupOverrides();
ListHandler.initForbiddenTiles(); ListHandler.initLists();
} }
public static void regCaps() public static void regCaps()

View File

@ -22,6 +22,7 @@ import net.minecraft.world.WorldServer;
import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.relauncher.ReflectionHelper; import net.minecraftforge.fml.relauncher.ReflectionHelper;
import tschipp.carryon.common.config.CarryOnConfig; import tschipp.carryon.common.config.CarryOnConfig;
import tschipp.carryon.common.handler.ListHandler;
import tschipp.carryon.common.helper.ScriptParseHelper; import tschipp.carryon.common.helper.ScriptParseHelper;
public class ScriptChecker public class ScriptChecker
@ -39,12 +40,17 @@ public class ScriptChecker
float resistance = block.getExplosionResistance(null); float resistance = block.getExplosionResistance(null);
NBTTagCompound nbt = tag; NBTTagCompound nbt = tag;
for (CarryOnOverride override : ScriptReader.OVERRIDES.values()) boolean isAllowed = CarryOnConfig.settings.useWhitelistBlocks ? ListHandler.isAllowed(block) : !ListHandler.isForbidden(block);
if (isAllowed)
{ {
if (override.isBlock()) for (CarryOnOverride override : ScriptReader.OVERRIDES.values())
{ {
if (matchesAll(override, block, meta, material, hardness, resistance, nbt)) if (override.isBlock())
return override; {
if (matchesAll(override, block, meta, material, hardness, resistance, nbt))
return override;
}
} }
} }
@ -64,12 +70,17 @@ public class ScriptChecker
NBTTagCompound tag = new NBTTagCompound(); NBTTagCompound tag = new NBTTagCompound();
entity.writeToNBT(tag); entity.writeToNBT(tag);
for (CarryOnOverride override : ScriptReader.OVERRIDES.values()) boolean isAllowed = CarryOnConfig.settings.useWhitelistEntities ? ListHandler.isAllowed(entity) : !ListHandler.isForbidden(entity);
if (isAllowed)
{ {
if (override.isEntity()) for (CarryOnOverride override : ScriptReader.OVERRIDES.values())
{ {
if (matchesAll(override, name, height, width, health, tag)) if (override.isEntity())
return override; {
if (matchesAll(override, name, height, width, health, tag))
return override;
}
} }
} }

View File

@ -0,0 +1,104 @@
package tschipp.carryon.compat.obfuscate;
import com.mrcrayfish.obfuscate.client.event.ModelPlayerEvent;
import net.minecraft.client.model.ModelPlayer;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import tschipp.carryon.common.config.CarryOnConfig;
import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.helper.ScriptParseHelper;
import tschipp.carryon.common.item.ItemEntity;
import tschipp.carryon.common.item.ItemTile;
import tschipp.carryon.common.scripting.CarryOnOverride;
import tschipp.carryon.common.scripting.ScriptChecker;
public class ObfuscateEvents
{
@SubscribeEvent
public void preModelPlayerEvent(ModelPlayerEvent.SetupAngles.Post event)
{
if(!CarryOnConfig.settings.renderArms)
return;
EntityPlayer player = event.getEntityPlayer();
float partialticks = event.getPartialTicks();
ModelPlayer model = event.getModelPlayer();
ItemStack stack = player.getHeldItemMainhand();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack) || stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack))
{
float rotation = 0;
if (player.isRiding() && player.getRidingEntity() instanceof EntityLivingBase)
rotation = 0;
else
rotation = 0;
CarryOnOverride overrider = ScriptChecker.getOverride(player);
if (overrider != null)
{
double[] rotLeft = null;
double[] rotRight = null;
if (overrider.getRenderRotationLeftArm() != null)
rotLeft = ScriptParseHelper.getXYZArray(overrider.getRenderRotationLeftArm());
if (overrider.getRenderRotationRightArm() != null)
rotRight = ScriptParseHelper.getXYZArray(overrider.getRenderRotationRightArm());
boolean renderRight = overrider.isRenderRightArm();
boolean renderLeft = overrider.isRenderLeftArm();
if (renderLeft && rotLeft != null)
{
renderArmPre(model.bipedLeftArm, (float) rotLeft[0], (float) rotLeft[2], rotation);
renderArmPre(model.bipedLeftArmwear, (float) rotLeft[0], (float) rotLeft[2], rotation);
}
else if (renderLeft)
{
renderArmPre(model.bipedLeftArm, 0.8F + (player.isSneaking() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
renderArmPre(model.bipedLeftArmwear, 0.8F + (player.isSneaking() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
}
if (renderRight && rotRight != null)
{
renderArmPre(model.bipedRightArm, (float) rotRight[0], (float) rotRight[2], rotation);
renderArmPre(model.bipedRightArmwear, (float) rotRight[0], (float) rotRight[2], rotation);
}
else if (renderRight)
{
renderArmPre(model.bipedRightArm, 0.8F + (player.isSneaking() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
renderArmPre(model.bipedRightArmwear, 0.8F + (player.isSneaking() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
}
}
else
{
renderArmPre(model.bipedRightArm, 0.8F + (player.isSneaking() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
renderArmPre(model.bipedRightArmwear, 0.8F + (player.isSneaking() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
renderArmPre(model.bipedLeftArm, 0.8F + (player.isSneaking() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
renderArmPre(model.bipedLeftArmwear, 0.8F + (player.isSneaking() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
}
}
}
@SideOnly(Side.CLIENT)
private void renderArmPre(ModelRenderer arm, float x, float z, float rotation)
{
arm.rotateAngleX = (float) -x;
arm.rotateAngleY = (float) -Math.toRadians(rotation);
arm.rotateAngleZ = (float) z;
}
}

View File

@ -2,7 +2,7 @@
{ {
"modid" : "carryon", "modid" : "carryon",
"name" : "Carry On", "name" : "Carry On",
"version" : "1.11.1", "mcversion" : "1.12.2", "version" : "1.12", "mcversion" : "1.12.2",
"url" : "", "url" : "",
"credits" : "Tschipp, Purplicious_Cow, cy4n", "credits" : "Tschipp, Purplicious_Cow, cy4n",
"authorList" : ["Tschipp, Purplicious_Cow, cy4n"], "authorList" : ["Tschipp, Purplicious_Cow, cy4n"],