cleaned up some code

This commit is contained in:
Tschipp 2021-12-21 11:00:11 +01:00
parent 3a8d938136
commit ff15f45ea0
40 changed files with 1477 additions and 1794 deletions

View File

@ -66,10 +66,10 @@ public class CarryOn
// CLIENT PACKETS
CarryOn.network.registerMessage(0, CarrySlotPacket.class, CarrySlotPacket::toBytes, CarrySlotPacket::new, CarrySlotPacket::handle, Optional.of(NetworkDirection.PLAY_TO_CLIENT));
CarryOn.network.registerMessage(1, ScriptReloadPacket.class, ScriptReloadPacket::toBytes, ScriptReloadPacket::new, ScriptReloadPacket::handle, Optional.of(NetworkDirection.PLAY_TO_CLIENT));
CarryOn.network.registerMessage(1, ScriptReloadPacket.class, ScriptReloadPacket::toBytes, ScriptReloadPacket::new, ScriptReloadPacket::handle, Optional.of(NetworkDirection.PLAY_TO_CLIENT));
// SERVER PACKETS
CarryOn.network.registerMessage(2, SyncKeybindPacket.class, SyncKeybindPacket::toBytes, SyncKeybindPacket::new, SyncKeybindPacket::handle, Optional.of(NetworkDirection.PLAY_TO_SERVER));
CarryOn.network.registerMessage(2, SyncKeybindPacket.class, SyncKeybindPacket::toBytes, SyncKeybindPacket::new, SyncKeybindPacket::handle, Optional.of(NetworkDirection.PLAY_TO_SERVER));
RegistrationHandler.regCommonEvents();

View File

@ -4,8 +4,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import com.mojang.blaze3d.platform.Lighting;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f;
@ -34,31 +32,30 @@ import tschipp.carryon.common.scripting.ScriptChecker;
public class RenderEntityEvents
{
public static final Map<String, Entity> nbtEntityMap = new HashMap<>();
public static Entity getEntity(ItemStack carried, Level world)
{
String nbt = ItemCarryonEntity.getPersistentData(carried).toString();
if(nbtEntityMap.containsKey(nbt))
if (nbtEntityMap.containsKey(nbt))
{
return nbtEntityMap.get(nbt);
}
Entity entity = ItemCarryonEntity.getEntity(carried, world);
nbtEntityMap.put(nbt, entity);
return entity;
}
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public void onWorldUnload(WorldEvent.Unload event)
{
nbtEntityMap.clear();
}
/*
* Renders the Entity in First Person
*/
@ -75,52 +72,52 @@ public class RenderEntityEvents
int light = event.getLight();
MultiBufferSource buffer = event.getBuffers();
EntityRenderDispatcher manager = Minecraft.getInstance().getEntityRenderDispatcher();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))
{
if(ModList.get().isLoaded("realrender") || ModList.get().isLoaded("rfpr"))
if (ModList.get().isLoaded("realrender") || ModList.get().isLoaded("rfpr"))
return;
Entity entity = getEntity(stack, world);
if (entity != null)
{
Vec3 playerpos = CarryRenderHelper.getExactPos(player, partialticks);
entity.setPos(playerpos.x, playerpos.y, playerpos.z);
entity.xRotO = 0.0f;
entity.yRotO = 0.0f;
entity.setYHeadRot(0.0f);
float height = entity.getBbHeight();
float width = entity.getBbWidth();
matrix.pushPose();
matrix.scale(0.8f, 0.8f, 0.8f);
matrix.mulPose(Vector3f.YP.rotationDegrees(180));
matrix.translate(0.0, -height - .1, width + 0.1);
// RenderSystem.enableAlphaTest();
// RenderSystem.enableAlphaTest();
if (perspective == 0)
{
// Lighting.en
// Lighting.en
manager.setRenderShadow(false);
CarryOnOverride carryOverride = ScriptChecker.getOverride(player);
if (carryOverride != null)
{
CarryRenderHelper.performOverrideTransformation(matrix, carryOverride);
String entityname = carryOverride.getRenderNameEntity();
if (entityname != null)
{
Entity newEntity = null;
Optional<EntityType<?>> type = EntityType.byString(entityname);
if(type.isPresent())
if (type.isPresent())
newEntity = type.get().create(world);
if (newEntity != null)
{
CompoundTag nbttag = carryOverride.getRenderNBT();
@ -135,19 +132,19 @@ public class RenderEntityEvents
}
}
if(entity instanceof LivingEntity)
if (entity instanceof LivingEntity)
((LivingEntity) entity).hurtTime = 0;
manager.render(entity, 0, 0, 0, 0f, 0, matrix, buffer, light);
manager.setRenderShadow(true);
}
// RenderSystem.disableAlphaTest();
// RenderSystem.disableAlphaTest();
matrix.popPose();
// Lighting.turnOff();
// TODO
// RenderSystem.disableRescaleNormal();
// Lighting.turnOff();
// TODO
// RenderSystem.disableRescaleNormal();
if (perspective == 0)
{

View File

@ -3,7 +3,6 @@ package tschipp.carryon.client.event;
import java.lang.reflect.InvocationTargetException;
import java.util.Optional;
import com.mojang.blaze3d.platform.Lighting;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.Tesselator;
@ -164,7 +163,7 @@ public class RenderEvents
{
ItemStack stack = player.getItemInHand(InteractionHand.MAIN_HAND);
if (!stack.isEmpty() && ((stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack)) || (stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))))
if (!stack.isEmpty() && (stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack) || stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack)))
{
Minecraft.getInstance().player.closeContainer();
Minecraft.getInstance().screen = null;
@ -193,7 +192,7 @@ public class RenderEvents
{
ItemStack stack = Minecraft.getInstance().player.getMainHandItem();
if (!stack.isEmpty() && ((stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack)) || (stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))))
if (!stack.isEmpty() && (stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack) || stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack)))
{
if (settings.keyDrop.matches(key, scancode))
{
@ -268,7 +267,7 @@ public class RenderEvents
matrix.mulPose(Vector3f.XP.rotationDegrees(8));
}
BakedModel model = ModelOverridesHandler.hasCustomOverrideModel(state, tag) ? ModelOverridesHandler.getCustomOverrideModel(state, tag, world, player) : (tileStack.isEmpty() ? Minecraft.getInstance().getBlockRenderer().getBlockModel(state) : Minecraft.getInstance().getItemRenderer().getModel(tileStack, world, player, 0));
BakedModel model = ModelOverridesHandler.hasCustomOverrideModel(state, tag) ? ModelOverridesHandler.getCustomOverrideModel(state, tag, world, player) : tileStack.isEmpty() ? Minecraft.getInstance().getBlockRenderer().getBlockModel(state) : Minecraft.getInstance().getItemRenderer().getModel(tileStack, world, player, 0);
CarryOnOverride carryOverride = ScriptChecker.getOverride(player);
if (carryOverride != null)
@ -333,7 +332,7 @@ public class RenderEvents
if (perspective == 0 && player == Minecraft.getInstance().player)
continue;
light = Minecraft.getInstance().getEntityRenderDispatcher().getPackedLightCoords(player, partialticks);
light = manager.getPackedLightCoords(player, partialticks);
ItemStack stack = player.getMainHandItem();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack))
@ -345,7 +344,7 @@ public class RenderEvents
applyBlockTransformations(player, partialticks, matrix, block);
BakedModel model = ModelOverridesHandler.hasCustomOverrideModel(state, tag) ? ModelOverridesHandler.getCustomOverrideModel(state, tag, world, player) : (tileItem.isEmpty() ? Minecraft.getInstance().getBlockRenderer().getBlockModel(state) : Minecraft.getInstance().getItemRenderer().getModel(tileItem, world, player, 0));
BakedModel model = ModelOverridesHandler.hasCustomOverrideModel(state, tag) ? ModelOverridesHandler.getCustomOverrideModel(state, tag, world, player) : tileItem.isEmpty() ? Minecraft.getInstance().getBlockRenderer().getBlockModel(state) : Minecraft.getInstance().getItemRenderer().getModel(tileItem, world, player, 0);
CarryOnOverride carryOverride = ScriptChecker.getOverride(player);
if (carryOverride != null)
@ -365,7 +364,7 @@ public class RenderEvents
}
RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS);
//TODO: Fix block light
// TODO: Fix block light
RenderSystem.enableCull();
PoseStack.Pose p = matrix.last();
@ -375,10 +374,10 @@ public class RenderEvents
drawArms(player, partialticks, matrix, buffer, light);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
CarryRenderHelper.renderItem(state, tag, stack, tileItem, copy, buffer, light, model);
buffer.endBatch();
matrix.popPose();
}
else if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))
@ -420,8 +419,8 @@ public class RenderEvents
}
}
if (entity instanceof LivingEntity)
((LivingEntity) entity).hurtTime = 0;
if (entity instanceof LivingEntity le)
le.hurtTime = 0;
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
@ -492,7 +491,7 @@ public class RenderEvents
if (pose == Pose.FALL_FLYING)
{
float f1 = (float) player.getFallFlyingTicks() + partialticks;
float f1 = player.getFallFlyingTicks() + partialticks;
float f2 = Mth.clamp(f1 * f1 / 100.0F, 0.0F, 1.0F);
if (!player.isAutoSpinAttack())
{
@ -537,11 +536,8 @@ public class RenderEvents
matrix.translate(0, 0, -0.4);
matrix.mulPose(Vector3f.YP.rotationDegrees(180));
}
else
{
if ((ModList.get().isLoaded("realrender") || ModList.get().isLoaded("rfpr")) && perspective == 0)
matrix.translate(0, 0, 0.4);
}
else if ((ModList.get().isLoaded("realrender") || ModList.get().isLoaded("rfpr")) && perspective == 0)
matrix.translate(0, 0, 0.4);
}
private void applyEntityTransformations(Player player, float partialticks, PoseStack matrix, Entity entity)
@ -592,10 +588,7 @@ public class RenderEvents
int perspective = CarryRenderHelper.getPerspective();
Pose pose = player.getPose();
if (!Settings.renderArms.get())
return;
if (pose == Pose.SWIMMING || pose == Pose.FALL_FLYING)
if (!Settings.renderArms.get() || pose == Pose.SWIMMING || pose == Pose.FALL_FLYING)
return;
if (handleMobends() && !ModList.get().isLoaded("obfuscate"))
@ -631,32 +624,32 @@ public class RenderEvents
if (renderLeft && rotLeft != null)
{
renderArmPost(model.leftArm, (float) rotLeft[0], (float) rotLeft[2], false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.leftSleeve, (float) rotLeft[0], (float) rotLeft[2], false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.leftArm, rotLeft[0], rotLeft[2], false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.leftSleeve, rotLeft[0], rotLeft[2], false, doSneakCheck(player), light, matrix, builder);
}
else if (renderLeft)
{
renderArmPost(model.leftArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.leftSleeve, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.leftArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0, false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.leftSleeve, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0, false, doSneakCheck(player), light, matrix, builder);
}
if (renderRight && rotRight != null)
{
renderArmPost(model.rightArm, (float) rotRight[0], (float) rotRight[2], true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.rightSleeve, (float) rotRight[0], (float) rotRight[2], true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.rightArm, rotRight[0], rotRight[2], true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.rightSleeve, rotRight[0], rotRight[2], true, doSneakCheck(player), light, matrix, builder);
}
else if (renderRight)
{
renderArmPost(model.rightArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.rightSleeve, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.rightArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0, true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.rightSleeve, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0, true, doSneakCheck(player), light, matrix, builder);
}
}
else
{
renderArmPost(model.rightArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.leftArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.leftSleeve, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.rightSleeve, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.rightArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0, true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.leftArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0, false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.leftSleeve, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0, false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.rightSleeve, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0, true, doSneakCheck(player), light, matrix, builder);
}
if (buffer instanceof BufferSource)
@ -731,9 +724,9 @@ public class RenderEvents
else
arm.y = 15;
arm.xRot = (float) x;
arm.yRot = (float) 0;
arm.zRot = (float) -z;
arm.xRot = x;
arm.yRot = 0;
arm.zRot = -z;
arm.render(matrix, builder, light, 655360);
arm.y = 2;
matrix.popPose();
@ -766,7 +759,7 @@ public class RenderEvents
if (player.getAbilities().flying)
return false;
return (player.isShiftKeyDown() || player.isCrouching());
return player.isShiftKeyDown() || player.isCrouching();
}
public static boolean isChest(Block block)

View File

@ -45,13 +45,13 @@ public class CarryRenderHelper
float[] translation = ScriptParseHelper.getXYZArray(override.getRenderTranslation());
float[] rotation = ScriptParseHelper.getXYZArray(override.getRenderRotation());
float[] scaled = ScriptParseHelper.getScaled(override.getRenderScaled());
Quaternion rot = Vector3f.XP.rotationDegrees(rotation[0]);
rot.mul(Vector3f.YP.rotationDegrees(rotation[1]));
rot.mul(Vector3f.YP.rotationDegrees(rotation[1]));
rot.mul(Vector3f.ZP.rotationDegrees(rotation[2]));
matrix.mulPose(rot);
matrix.translate(translation[0], translation[1], perspective == 1 && override.isBlock() ? -translation[2] : translation[2]);
matrix.translate(translation[0], translation[1], perspective == 1 && override.isBlock() ? -translation[2] : translation[2]);
matrix.scale(scaled[0], scaled[1], scaled[2]);
}
@ -64,7 +64,7 @@ public class CarryRenderHelper
if (override instanceof ItemStack)
{
Minecraft.getInstance().getItemRenderer().render((ItemStack) override, TransformType.NONE, false, matrix, buffer, light, 0xFFFFFF, model);
Minecraft.getInstance().getItemRenderer().render((ItemStack) override, TransformType.NONE, false, matrix, buffer, light, 0xFFFFFF, model);
return;
}
}
@ -75,7 +75,7 @@ public class CarryRenderHelper
@SuppressWarnings("resource")
public static int getPerspective()
{
boolean isThirdPerson = !Minecraft.getInstance().options.getCameraType().isFirstPerson(); //isThirdPerson
boolean isThirdPerson = !Minecraft.getInstance().options.getCameraType().isFirstPerson(); // isThirdPerson
boolean isThirdPersonReverse = Minecraft.getInstance().options.getCameraType().isMirrored();
if (!isThirdPerson && !isThirdPersonReverse)

View File

@ -12,31 +12,29 @@ public class CarryOnKeybinds
public static final String KEYBIND_KEY = "carryOnKeyPressed";
public static KeyMapping carryKey;
@OnlyIn(Dist.CLIENT)
public static void init()
{
carryKey = new KeyMapping("key.carry.desc", 340, "key.carry.category");
ClientRegistry.registerKeyBinding(carryKey);
}
public static boolean isKeyPressed(Player player)
{
CompoundTag tag = player.getPersistentData();
if(tag != null && tag.contains(KEYBIND_KEY))
if (tag != null && tag.contains(KEYBIND_KEY))
{
return tag.getBoolean(KEYBIND_KEY);
}
return false;
}
public static void setKeyPressed(Player player, boolean pressed)
{
CompoundTag tag = player.getPersistentData();
tag.putBoolean(KEYBIND_KEY, pressed);
}
}

View File

@ -2,15 +2,15 @@ package tschipp.carryon.common.capabilities;
import net.minecraft.core.BlockPos;
public interface IPosition {
public interface IPosition
{
public BlockPos getPos();
public void setPos(BlockPos pos);
public boolean isBlockActivated();
public void setBlockActivated(boolean b);
}

View File

@ -14,17 +14,15 @@ public class PositionProvider implements ICapabilitySerializable<CompoundTag>
@CapabilityInject(IPosition.class)
public static final Capability<IPosition> POSITION_CAPABILITY = null;
private IPosition instance = new TEPosition();//POSITION_CAPABILITY.getDefaultInstance();
private IPosition instance = new TEPosition();// POSITION_CAPABILITY.getDefaultInstance();
@SuppressWarnings("unchecked")
@Override
public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side)
{
if (cap == POSITION_CAPABILITY)
return (LazyOptional<T>) LazyOptional.of(() -> {
return new TEPosition();
});
return (LazyOptional<T>) LazyOptional.of(TEPosition::new);
return LazyOptional.empty();
}
@ -33,27 +31,27 @@ public class PositionProvider implements ICapabilitySerializable<CompoundTag>
{
CompoundTag tag = new CompoundTag();
tag.putBoolean("blockActivated", instance.isBlockActivated());
tag.putInt("x", instance.getPos().getX());
tag.putInt("y", instance.getPos().getY());
tag.putInt("z", instance.getPos().getZ());
tag.putBoolean("blockActivated", this.instance.isBlockActivated());
tag.putInt("x", this.instance.getPos().getX());
tag.putInt("y", this.instance.getPos().getY());
tag.putInt("z", this.instance.getPos().getZ());
return tag;
}
@Override
public void deserializeNBT(CompoundTag nbt)
{
CompoundTag tag = (CompoundTag) nbt;
CompoundTag tag = nbt;
int x = tag.getInt("x");
int y = tag.getInt("y");
int z = tag.getInt("z");
BlockPos pos = new BlockPos(x,y,z);
instance.setPos(pos);
instance.setBlockActivated(tag.getBoolean("blockActivated"));
BlockPos pos = new BlockPos(x, y, z);
this.instance.setPos(pos);
this.instance.setBlockActivated(tag.getBoolean("blockActivated"));
}
}

View File

@ -2,31 +2,34 @@ package tschipp.carryon.common.capabilities;
import net.minecraft.core.BlockPos;
public class TEPosition implements IPosition {
public class TEPosition implements IPosition
{
private BlockPos pos = new BlockPos(0, 0, 0);
private boolean blockActivated = false;
@Override
public BlockPos getPos()
{
return pos;
return this.pos;
}
@Override
public void setPos(BlockPos pos)
{
this.pos = pos;
}
@Override
public boolean isBlockActivated()
{
return blockActivated;
return this.blockActivated;
}
@Override
public void setBlockActivated(boolean b)
{
this.blockActivated = b;
}
}

View File

@ -28,48 +28,44 @@ public class PositionClientEvents
{
Player player = Minecraft.getInstance().player;
boolean inventory = event.getGui() instanceof AbstractContainerScreen;
if (player != null && inventory)
if (player != null && inventory && player.getCapability(PositionProvider.POSITION_CAPABILITY).isPresent())
{
if(player.getCapability(PositionProvider.POSITION_CAPABILITY).isPresent())
IPosition cap = player.getCapability(PositionProvider.POSITION_CAPABILITY).orElse(new TEPosition());
if (cap.isBlockActivated())
{
IPosition cap = player.getCapability(PositionProvider.POSITION_CAPABILITY).orElse(new TEPosition());
if(cap.isBlockActivated())
Level world = player.level;
BlockPos pos = cap.getPos();
if (world != null)
{
Level world = player.level;
BlockPos pos = cap.getPos();
if(world != null)
BlockEntity te = world.getBlockEntity(pos);
if (te == null)
{
BlockEntity te = world.getBlockEntity(pos);
if(te == null)
{
// player.openContainer = null;
Minecraft.getInstance().screen = null;
// Minecraft.getInstance().fo;
cap.setBlockActivated(false);
cap.setPos(new BlockPos(0,0,0));
}
// player.openContainer = null;
Minecraft.getInstance().screen = null;
// Minecraft.getInstance().fo;
cap.setBlockActivated(false);
cap.setPos(new BlockPos(0, 0, 0));
}
}
}
}
}
}
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public void onGuiClose(PlayerContainerEvent.Close event)
{
Player player = event.getPlayer();
if(player.getCapability(PositionProvider.POSITION_CAPABILITY).isPresent())
if (player.getCapability(PositionProvider.POSITION_CAPABILITY).isPresent())
{
IPosition cap = player.getCapability(PositionProvider.POSITION_CAPABILITY).orElse(new TEPosition());
cap.setBlockActivated(false);
cap.setPos(new BlockPos(0,0,0));
cap.setPos(new BlockPos(0, 0, 0));
}
}
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public void onPlayerTick(PlayerTickEvent event)
@ -77,7 +73,7 @@ public class PositionClientEvents
if (event.side == LogicalSide.CLIENT)
{
Player player = event.player;
if(player.getCapability(PositionProvider.POSITION_CAPABILITY).isPresent())
if (player.getCapability(PositionProvider.POSITION_CAPABILITY).isPresent())
{
IPosition cap = player.getCapability(PositionProvider.POSITION_CAPABILITY).orElse(new TEPosition());
if (cap.isBlockActivated() && Minecraft.getInstance().screen == null)
@ -88,6 +84,5 @@ public class PositionClientEvents
}
}
}
}

View File

@ -35,27 +35,16 @@ public class PositionCommonEvents
Level world = event.getWorld();
Player player = event.getPlayer();
if (event.isCanceled())
return;
if (player == null)
return;
if (player instanceof FakePlayer)
if (event.isCanceled() || player == null || player instanceof FakePlayer)
return;
BlockEntity te = world.getBlockEntity(pos);
if (te != null)
if (te != null && player.getCapability(PositionProvider.POSITION_CAPABILITY).isPresent())
{
if(player.getCapability(PositionProvider.POSITION_CAPABILITY).isPresent())
{
IPosition cap = player.getCapability(PositionProvider.POSITION_CAPABILITY).orElse(new TEPosition());
cap.setBlockActivated(true);
cap.setPos(pos);
}
IPosition cap = player.getCapability(PositionProvider.POSITION_CAPABILITY).orElse(new TEPosition());
cap.setBlockActivated(true);
cap.setPos(pos);
}
}
}

View File

@ -28,17 +28,11 @@ public class CommandCarryOn
{
LiteralArgumentBuilder<CommandSourceStack> builder = Commands.literal("carryon")
.then(Commands.literal("debug").executes((cmd) -> {
return handleDebug(cmd.getSource());
}))
.then(Commands.literal("debug").executes(cmd -> handleDebug(cmd.getSource())))
.then(Commands.literal("clear").executes((cmd) -> {
return handleClear(cmd.getSource(), Collections.singleton(cmd.getSource().getPlayerOrException()));
}))
.then(Commands.literal("clear").executes(cmd -> handleClear(cmd.getSource(), Collections.singleton(cmd.getSource().getPlayerOrException()))))
.then(Commands.literal("clear").then(Commands.argument("target", EntityArgument.players()).requires(src -> src.hasPermission(2)).executes((cmd) -> {
return handleClear(cmd.getSource(), EntityArgument.getPlayers(cmd, "target"));
})))
.then(Commands.literal("clear").then(Commands.argument("target", EntityArgument.players()).requires(src -> src.hasPermission(2)).executes(cmd -> handleClear(cmd.getSource(), EntityArgument.getPlayers(cmd, "target")))))
;
@ -100,7 +94,6 @@ public class CommandCarryOn
}
catch (CommandSyntaxException e)
{
return 0;
}
return 0;
@ -114,7 +107,7 @@ public class CommandCarryOn
cleared += player.getInventory().clearOrCountMatchingItems(stack -> !stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile, 64, player.inventoryMenu.getCraftSlots()); // TODO
cleared += player.getInventory().clearOrCountMatchingItems(stack -> !stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity, 64, player.inventoryMenu.getCraftSlots());
CarryOn.network.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new CarrySlotPacket(9, player.getId()));
CarryOn.network.send(PacketDistributor.PLAYER.with(() -> player), new CarrySlotPacket(9, player.getId()));
if (cleared != 1)
source.sendSuccess(new TextComponent("Cleared " + cleared + " Items!"), true);

View File

@ -13,5 +13,4 @@ public class CarryOnConfig
public static Configs.CustomPickupConditions customPickupConditions = new Configs.CustomPickupConditions();
}

View File

@ -19,26 +19,28 @@ import tschipp.carryon.CarryOn;
import tschipp.carryon.common.handler.ListHandler;
@Mod.EventBusSubscriber(modid = CarryOn.MODID, bus = Bus.MOD)
public class Configs {
public class Configs
{
private static final ForgeConfigSpec.Builder SERVER_BUILDER = new ForgeConfigSpec.Builder();
private static final ForgeConfigSpec.Builder CLIENT_BUILDER = new ForgeConfigSpec.Builder();
public static final ForgeConfigSpec SERVER_CONFIG;
public static final ForgeConfigSpec CLIENT_CONFIG;
static {
static
{
Settings.init(SERVER_BUILDER, CLIENT_BUILDER);
Blacklist.init(SERVER_BUILDER, CLIENT_BUILDER);
WhiteList.init(SERVER_BUILDER, CLIENT_BUILDER);
ModelOverrides.init(SERVER_BUILDER, CLIENT_BUILDER);
CustomPickupConditions.init(SERVER_BUILDER, CLIENT_BUILDER);
SERVER_CONFIG = SERVER_BUILDER.build();
CLIENT_CONFIG = CLIENT_BUILDER.build();
}
@SubscribeEvent
public static void onLoad(final ModConfigEvent.Loading event)
{
@ -47,12 +49,12 @@ public class Configs {
ListHandler.initConfigLists();
CommentedConfig cfg = event.getConfig().getConfigData();
if(cfg instanceof CommentedFileConfig)
if (cfg instanceof CommentedFileConfig)
((CommentedFileConfig) cfg).load();
}
}
@SubscribeEvent
public static void onConfigChanged(ModConfigEvent.Reloading event)
{
@ -61,59 +63,58 @@ public class Configs {
ListHandler.initConfigLists();
CommentedConfig cfg = event.getConfig().getConfigData();
if(cfg instanceof CommentedFileConfig)
if (cfg instanceof CommentedFileConfig)
((CommentedFileConfig) cfg).load();
}
}
public static class Settings
{
public static BooleanValue facePlayer;
public static BooleanValue heavyTiles;
public static BooleanValue pickupAllBlocks;
public static BooleanValue slownessInCreative;
public static DoubleValue maxDistance;
public static DoubleValue maxEntityWidth;
public static DoubleValue maxEntityHeight;
public static BooleanValue pickupHostileMobs;
public static BooleanValue heavyEntities;
public static DoubleValue blockSlownessMultiplier;
public static DoubleValue entitySlownessMultiplier;
public static BooleanValue renderArms;
public static BooleanValue allowBabies;
public static BooleanValue useWhitelistBlocks;
public static BooleanValue useWhitelistEntities;
public static BooleanValue useWhitelistStacking;
public static BooleanValue hitWhileCarrying;
public static BooleanValue dropCarriedWhenHit;
public static BooleanValue useScripts;
public static BooleanValue stackableEntities;
public static IntValue maxEntityStackLimit;
public static BooleanValue entitySizeMattersStacking;
public static void init(ForgeConfigSpec.Builder s, ForgeConfigSpec.Builder c)
{
c.comment("Settings");
@ -121,336 +122,127 @@ public class Configs {
s.push("settings");
c.push("settings");
maxDistance = s
.comment("Maximum distance from where Blocks and Entities can be picked up")
.defineInRange("maxDistance", 2.5, 0, Double.MAX_VALUE);
maxEntityWidth = s
.comment("Max width of entities that can be picked up in survival mode")
.defineInRange("maxEntityWidth", 1.5, 0, 10);
maxEntityHeight = s
.comment("Max height of entities that can be picked up in survival mode")
.defineInRange("maxEntityHeight", 1.5, 0, 10);
maxEntityWidth = s
.comment("Max width of entities that can be picked up in survival mode")
.defineInRange("maxEntityWidth", 1.5, 0, 10);
blockSlownessMultiplier = s
.comment("Slowness multiplier for blocks")
.defineInRange("blockSlownessMultiplier", 1, 0, Double.MAX_VALUE);
entitySlownessMultiplier = s
.comment("Slowness multiplier for entities")
.defineInRange("entitySlownessMultiplier", 1, 0, Double.MAX_VALUE);
maxEntityStackLimit = s
.comment("Maximum stack limit for entities")
.defineInRange("maxEntityStackLimit", 10, 1, Integer.MAX_VALUE);
facePlayer = c
.comment("If the front of the Tile Entities should face the player or should face outward")
.define("facePlayer", false);
heavyTiles = s
.comment("More complex Tile Entities slow down the player more")
.define("heavyTiles", true);
pickupAllBlocks = s
.comment("Allow all blocks to be picked up, not just Tile Entites")
.define("pickupAllBlocks", false);
slownessInCreative = s
.comment("Whether Blocks and Entities slow the creative player down when carried")
.define("slownessInCreative", true);
pickupHostileMobs = s
.comment("Whether hostile mobs should be able to picked up in survival mode")
.define("pickupHostileMobs", false);
heavyEntities = s
.comment("Larger Entities slow down the player more")
.define("heavyEntities", true);
renderArms = c
.comment("Arms should render on sides when carrying")
.define("renderArms", true);
allowBabies = s
.comment("Allow babies to be carried even when adult mob is blacklisted (or not whitelisted)")
.define("allowBabies", false);
useWhitelistBlocks = s
.comment("Use Whitelist instead of Blacklist for Blocks")
.define("useWhitelistBlocks", false);
useWhitelistEntities = s
.comment("Use Whitelist instead of Blacklist for Entities")
.define("useWhitelistEntities", false);
useWhitelistStacking = s
.comment("Use Whitelist instead of Blacklist for Stacking")
.define("useWhitelistStacking", false);
hitWhileCarrying = s
.comment("Whether the player can hit blocks and entities while carrying or not")
.define("hitWhileCarrying", false);
dropCarriedWhenHit = s
.comment("Whether the player drops the carried object when hit or not")
.define("dropCarriedWhenHit", false);
useScripts = s
.comment("Use custom Pickup Scripts. Having this set to false, will not allow you to run scripts, but will increase your performance")
.worldRestart()
.define("useScripts", false);
stackableEntities = s
.comment("Allows entities to be stacked using Carry On")
.define("stackableEntities", true);
entitySizeMattersStacking = s
.comment("Whether entities' size matters when stacking or not")
.define("stackableEntities", true);
maxDistance = s.comment("Maximum distance from where Blocks and Entities can be picked up").defineInRange("maxDistance", 2.5, 0, Double.MAX_VALUE);
maxEntityWidth = s.comment("Max width of entities that can be picked up in survival mode").defineInRange("maxEntityWidth", 1.5, 0, 10);
maxEntityHeight = s.comment("Max height of entities that can be picked up in survival mode").defineInRange("maxEntityHeight", 1.5, 0, 10);
maxEntityWidth = s.comment("Max width of entities that can be picked up in survival mode").defineInRange("maxEntityWidth", 1.5, 0, 10);
blockSlownessMultiplier = s.comment("Slowness multiplier for blocks").defineInRange("blockSlownessMultiplier", 1, 0, Double.MAX_VALUE);
entitySlownessMultiplier = s.comment("Slowness multiplier for entities").defineInRange("entitySlownessMultiplier", 1, 0, Double.MAX_VALUE);
maxEntityStackLimit = s.comment("Maximum stack limit for entities").defineInRange("maxEntityStackLimit", 10, 1, Integer.MAX_VALUE);
facePlayer = c.comment("If the front of the Tile Entities should face the player or should face outward").define("facePlayer", false);
heavyTiles = s.comment("More complex Tile Entities slow down the player more").define("heavyTiles", true);
pickupAllBlocks = s.comment("Allow all blocks to be picked up, not just Tile Entites").define("pickupAllBlocks", false);
slownessInCreative = s.comment("Whether Blocks and Entities slow the creative player down when carried").define("slownessInCreative", true);
pickupHostileMobs = s.comment("Whether hostile mobs should be able to picked up in survival mode").define("pickupHostileMobs", false);
heavyEntities = s.comment("Larger Entities slow down the player more").define("heavyEntities", true);
renderArms = c.comment("Arms should render on sides when carrying").define("renderArms", true);
allowBabies = s.comment("Allow babies to be carried even when adult mob is blacklisted (or not whitelisted)").define("allowBabies", false);
useWhitelistBlocks = s.comment("Use Whitelist instead of Blacklist for Blocks").define("useWhitelistBlocks", false);
useWhitelistEntities = s.comment("Use Whitelist instead of Blacklist for Entities").define("useWhitelistEntities", false);
useWhitelistStacking = s.comment("Use Whitelist instead of Blacklist for Stacking").define("useWhitelistStacking", false);
hitWhileCarrying = s.comment("Whether the player can hit blocks and entities while carrying or not").define("hitWhileCarrying", false);
dropCarriedWhenHit = s.comment("Whether the player drops the carried object when hit or not").define("dropCarriedWhenHit", false);
useScripts = s.comment("Use custom Pickup Scripts. Having this set to false, will not allow you to run scripts, but will increase your performance").worldRestart().define("useScripts", false);
stackableEntities = s.comment("Allows entities to be stacked using Carry On").define("stackableEntities", true);
entitySizeMattersStacking = s.comment("Whether entities' size matters when stacking or not").define("stackableEntities", true);
s.pop();
c.pop();
}
}
public static class WhiteList
{
public static ConfigValue<List<? extends String>> allowedEntities;
public static ConfigValue<List<? extends String>> allowedBlocks;
public static ConfigValue<List<? extends String>> allowedStacking;
public static void init(ForgeConfigSpec.Builder s, ForgeConfigSpec.Builder c)
{
s.comment("Whitelist. Read about the format here: https://github.com/Tschipp/CarryOn/wiki/Black---and-Whitelist-Config");
allowedEntities = s
.comment("Entities that CAN be picked up (useWhitelistEntities must be true)")
.defineList("whitelist.allowedEntities", Arrays.asList(new String[]{}), (obj) -> obj instanceof String ? true : false);
allowedBlocks = s
.comment("Blocks that CAN be picked up (useWhitelistBlocks must be true)")
.defineList("whitelist.allowedBlocks", Arrays.asList(new String[]{}), (obj) -> obj instanceof String ? true : false);
allowedStacking = s
.comment("Entities that CAN have other entities stacked on top of them (useWhitelistStacking must be true)")
.defineList("whitelist.allowedStacking", Arrays.asList(new String[]{}), (obj) -> obj instanceof String ? true : false);
allowedEntities = s.comment("Entities that CAN be picked up (useWhitelistEntities must be true)").defineList("whitelist.allowedEntities", Arrays.asList(), obj -> obj instanceof String ? true : false);
allowedBlocks = s.comment("Blocks that CAN be picked up (useWhitelistBlocks must be true)").defineList("whitelist.allowedBlocks", Arrays.asList(), obj -> obj instanceof String ? true : false);
allowedStacking = s.comment("Entities that CAN have other entities stacked on top of them (useWhitelistStacking must be true)").defineList("whitelist.allowedStacking", Arrays.asList(), obj -> obj instanceof String ? true : false);
}
}
public static class Blacklist
{
public static ConfigValue<List<? extends String>> forbiddenTiles;
public static ConfigValue<List<? extends String>> forbiddenEntities;
public static ConfigValue<List<? extends String>> forbiddenStacking;
public static void init(ForgeConfigSpec.Builder s, ForgeConfigSpec.Builder c)
{
s.comment("Blacklist. Read about the format here: https://github.com/Tschipp/CarryOn/wiki/Black---and-Whitelist-Config");
forbiddenTiles = s
.comment("Blocks that cannot be picked up")
.defineList("blacklist.forbiddenTiles", Arrays.asList(new String[]
{
"#forge:immovable",
"#forge:relocation_not_supported",
"minecraft:end_portal",
"minecraft:end_gateway",
"minecraft:tall_grass",
"minecraft:large_fern",
"minecraft:peony",
"minecraft:rose_bush",
"minecraft:lilac",
"minecraft:sunflower",
"minecraft:*_bed",
"minecraft:oak_door",
"minecraft:iron_door",
"minecraft:spruce_door",
"minecraft:birch_door",
"minecraft:jungle_door",
"minecraft:acacia_door",
"minecraft:dark_oak_door",
"minecraft:waterlily",
"minecraft:cake",
"minecraft:nether_portal",
"minecraft:tall_seagrass",
"animania:block_trough",
"animania:block_invisiblock",
"colossalchests:*",
"ic2:*",
"bigreactors:*",
"forestry:*",
"tconstruct:*",
"rustic:*",
"botania:*",
"astralsorcery:*",
"quark:colored_bed_*",
"immersiveengineering:*",
"embers:block_furnace",
"embers:ember_bore",
"embers:ember_activator",
"embers:mixer",
"embers:heat_coil",
"embers:large_tank",
"embers:crystal_cell",
"embers:alchemy_pedestal",
"embers:boiler",
"embers:combustor",
"embers:catalzyer",
"embers:field_chart",
"embers:inferno_forge",
"storagedrawers:framingtable",
"skyresources:*",
"lootbags:*",
"exsartagine:*",
"aquamunda:tank",
"opencomputers:*",
"malisisdoors:*",
"industrialforegoing:*",
"minecolonies:*",
"thaumcraft:pillar*",
"thaumcraft:infernal_furnace",
"thaumcraft:placeholder*",
"thaumcraft:infusion_matrix",
"thaumcraft:golem_builder",
"thaumcraft:thaumatorium*",
"magneticraft:oil_heater",
"magneticraft:solar_panel",
"magneticraft:steam_engine",
"magneticraft:shelving_unit",
"magneticraft:grinder",
"magneticraft:sieve",
"magneticraft:solar_tower",
"magneticraft:solar_mirror",
"magneticraft:container",
"magneticraft:pumpjack",
"magneticraft:solar_panel",
"magneticraft:refinery",
"magneticraft:oil_heater",
"magneticraft:hydraulic_press",
"magneticraft:multiblock_gap",
"refinedstorage:*",
"mcmultipart:*",
"enderstorage:*",
"betterstorage:*",
"practicallogistics2:*",
"wearablebackpacks:*",
"rftools:screen",
"rftools:creative_screen",
"create:*",
"magic_doorknob:*",
"iceandfire:*",
"ftbquests:*",
"waystones:*"
}), (obj) -> obj instanceof String);
forbiddenEntities = s
.comment("Entities that cannot be picked up")
.defineList("blacklist.forbiddenEntities", Arrays.asList(new String[]
{
"minecraft:end_crystal",
"minecraft:ender_dragon",
"minecraft:ghast",
"minecraft:shulker",
"minecraft:leash_knot",
"minecraft:armor_stand",
"minecraft:item_frame",
"minecraft:painting",
"minecraft:shulker_bullet",
"animania:hamster",
"animania:ferret*",
"animania:hedgehog*",
"animania:cart",
"animania:wagon",
"mynko:*",
"pixelmon:*",
"mocreatures:*",
"quark:totem",
"vehicle:*"
}), (obj) -> obj instanceof String ? true : false);
forbiddenStacking = s
.comment("Entities that cannot have other entities stacked on top of them")
.defineList("blacklist.forbiddenStacking", Arrays.asList(new String[]
{
"minecraft:horse"
}), (obj) -> obj instanceof String ? true : false);
forbiddenTiles = s.comment("Blocks that cannot be picked up").defineList("blacklist.forbiddenTiles", Arrays.asList("#forge:immovable", "#forge:relocation_not_supported", "minecraft:end_portal", "minecraft:end_gateway", "minecraft:tall_grass", "minecraft:large_fern", "minecraft:peony", "minecraft:rose_bush", "minecraft:lilac", "minecraft:sunflower", "minecraft:*_bed", "minecraft:oak_door", "minecraft:iron_door", "minecraft:spruce_door", "minecraft:birch_door", "minecraft:jungle_door", "minecraft:acacia_door", "minecraft:dark_oak_door", "minecraft:waterlily", "minecraft:cake", "minecraft:nether_portal", "minecraft:tall_seagrass", "animania:block_trough", "animania:block_invisiblock", "colossalchests:*", "ic2:*", "bigreactors:*", "forestry:*", "tconstruct:*", "rustic:*", "botania:*", "astralsorcery:*", "quark:colored_bed_*", "immersiveengineering:*", "embers:block_furnace", "embers:ember_bore", "embers:ember_activator", "embers:mixer", "embers:heat_coil", "embers:large_tank", "embers:crystal_cell", "embers:alchemy_pedestal", "embers:boiler", "embers:combustor", "embers:catalzyer", "embers:field_chart", "embers:inferno_forge", "storagedrawers:framingtable", "skyresources:*", "lootbags:*", "exsartagine:*", "aquamunda:tank", "opencomputers:*", "malisisdoors:*", "industrialforegoing:*", "minecolonies:*", "thaumcraft:pillar*", "thaumcraft:infernal_furnace", "thaumcraft:placeholder*", "thaumcraft:infusion_matrix", "thaumcraft:golem_builder", "thaumcraft:thaumatorium*", "magneticraft:oil_heater", "magneticraft:solar_panel", "magneticraft:steam_engine", "magneticraft:shelving_unit", "magneticraft:grinder", "magneticraft:sieve", "magneticraft:solar_tower", "magneticraft:solar_mirror", "magneticraft:container", "magneticraft:pumpjack", "magneticraft:solar_panel", "magneticraft:refinery", "magneticraft:oil_heater", "magneticraft:hydraulic_press", "magneticraft:multiblock_gap", "refinedstorage:*", "mcmultipart:*", "enderstorage:*", "betterstorage:*", "practicallogistics2:*", "wearablebackpacks:*", "rftools:screen", "rftools:creative_screen", "create:*", "magic_doorknob:*", "iceandfire:*", "ftbquests:*", "waystones:*"), obj -> obj instanceof String);
forbiddenEntities = s.comment("Entities that cannot be picked up").defineList("blacklist.forbiddenEntities", Arrays.asList("minecraft:end_crystal", "minecraft:ender_dragon", "minecraft:ghast", "minecraft:shulker", "minecraft:leash_knot", "minecraft:armor_stand", "minecraft:item_frame", "minecraft:painting", "minecraft:shulker_bullet", "animania:hamster", "animania:ferret*", "animania:hedgehog*", "animania:cart", "animania:wagon", "mynko:*", "pixelmon:*", "mocreatures:*", "quark:totem", "vehicle:*"), obj -> obj instanceof String ? true : false);
forbiddenStacking = s.comment("Entities that cannot have other entities stacked on top of them").defineList("blacklist.forbiddenStacking", Arrays.asList("minecraft:horse"), obj -> obj instanceof String ? true : false);
}
}
public static class ModelOverrides
{
public static ConfigValue<List<? extends String>> modelOverrides;
public static void init(ForgeConfigSpec.Builder s, ForgeConfigSpec.Builder c)
{
c.comment("Model Overrides. Read about the format here: https://github.com/Tschipp/CarryOn/wiki/Model-Override-Config");
modelOverrides = c
.comment("Model Overrides based on NBT or on Meta. Advanced Users Only!")
.defineList("modeloverrides.overrides", Arrays.asList(new String[]
{
"minecraft:hopper->(block)minecraft:hopper",
"minecraft:comparator->(block)minecraft:comparator",
"minecraft:repeater->(block)minecraft:repeater",
"minecraft:cauldron->(block)minecraft:cauldron",
"minecraft:brewing_stand->(item)minecraft:brewing_stand",
"minecraft:flower_pot->(block)minecraft:flower_pot",
"minecraft:sugar_cane->(block)minecraft:sugar_cane",
"minecraft:redstone_wire->(item)minecraft:redstone",
"animania:block_nest->(block)animania:block_nest",
"animania:cheese_mold;0->(block)animania:cheese_mold;0",
"animania:cheese_mold;1->(block)animania:cheese_mold;1",
"animania:cheese_mold;2->(block)animania:cheese_mold;2",
"animania:cheese_mold;3->(block)animania:cheese_mold;3",
"animania:cheese_mold;4->(block)animania:cheese_mold;4",
"animania:cheese_mold;5->(block)animania:cheese_mold;5",
"animania:cheese_mold;6->(block)animania:cheese_mold;6",
"animania:cheese_mold;7->(block)animania:cheese_mold;7",
"animania:cheese_mold;8->(block)animania:cheese_mold;8",
"animania:cheese_mold;9->(block)animania:cheese_mold;9",
"animania:cheese_mold;10->(block)animania:cheese_mold;10",
}), (obj) -> obj instanceof String ? true : false);
modelOverrides = c.comment("Model Overrides based on NBT or on Meta. Advanced Users Only!").defineList("modeloverrides.overrides", Arrays.asList("minecraft:hopper->(block)minecraft:hopper", "minecraft:comparator->(block)minecraft:comparator", "minecraft:repeater->(block)minecraft:repeater", "minecraft:cauldron->(block)minecraft:cauldron", "minecraft:brewing_stand->(item)minecraft:brewing_stand", "minecraft:flower_pot->(block)minecraft:flower_pot", "minecraft:sugar_cane->(block)minecraft:sugar_cane", "minecraft:redstone_wire->(item)minecraft:redstone", "animania:block_nest->(block)animania:block_nest", "animania:cheese_mold;0->(block)animania:cheese_mold;0", "animania:cheese_mold;1->(block)animania:cheese_mold;1", "animania:cheese_mold;2->(block)animania:cheese_mold;2", "animania:cheese_mold;3->(block)animania:cheese_mold;3", "animania:cheese_mold;4->(block)animania:cheese_mold;4", "animania:cheese_mold;5->(block)animania:cheese_mold;5", "animania:cheese_mold;6->(block)animania:cheese_mold;6", "animania:cheese_mold;7->(block)animania:cheese_mold;7", "animania:cheese_mold;8->(block)animania:cheese_mold;8", "animania:cheese_mold;9->(block)animania:cheese_mold;9", "animania:cheese_mold;10->(block)animania:cheese_mold;10"), obj -> obj instanceof String ? true : false);
}
}
public static class CustomPickupConditions
{
public static ConfigValue<List<? extends String>> customPickupConditionsBlocks;
public static ConfigValue<List<? extends String>> customPickupConditionsEntities;
public static void init(ForgeConfigSpec.Builder s, ForgeConfigSpec.Builder c)
{
s.comment("Custom Pickup Conditions. Read about the format here: https://github.com/Tschipp/CarryOn/wiki/Custom-Pickup-Condition-Config");
customPickupConditionsBlocks = s
.comment("Custom Pickup Conditions for Blocks")
.defineList("custom_pickup_conditions.customPickupConditionsBlocks", Arrays.asList(new String[]{}), (obj) -> obj instanceof String ? true : false);
customPickupConditionsEntities = s
.comment("Custom Pickup Conditions for Entities")
.defineList("custom_pickup_conditions.customPickupConditionsEntities", Arrays.asList(new String[]{}), (obj) -> obj instanceof String ? true : false);
customPickupConditionsBlocks = s.comment("Custom Pickup Conditions for Blocks").defineList("custom_pickup_conditions.customPickupConditionsBlocks", Arrays.asList(), obj -> obj instanceof String ? true : false);
customPickupConditionsEntities = s.comment("Custom Pickup Conditions for Entities").defineList("custom_pickup_conditions.customPickupConditionsEntities", Arrays.asList(), obj -> obj instanceof String ? true : false);
}
}

View File

@ -19,16 +19,14 @@ public class IMCEvents
{
Stream<IMCMessage> messages = InterModComms.getMessages(CarryOn.MODID);
messages.forEach((msg) -> {
messages.forEach(msg -> {
String method = msg.method();
Object obj = msg.messageSupplier().get();
if(!(obj instanceof String))
if (!(obj instanceof String str))
return;
String str = (String)obj;
switch (method)
{
case "blacklistBlock":
@ -57,5 +55,5 @@ public class IMCEvents
});
}
}

View File

@ -55,7 +55,7 @@ public class ItemEntityEvents
if (override != null)
{
String command = override.getCommandPlace();
if (command != null)
player.getServer().getCommands().performCommand(player.getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().getName() + " run " + command);
}
@ -69,9 +69,8 @@ public class ItemEntityEvents
{
Entity e = event.getEntity();
Level world = event.getWorld();
if (e instanceof net.minecraft.world.entity.item.ItemEntity)
if (e instanceof net.minecraft.world.entity.item.ItemEntity eitem)
{
net.minecraft.world.entity.item.ItemEntity eitem = (net.minecraft.world.entity.item.ItemEntity) e;
ItemStack stack = eitem.getItem();
Item item = stack.getItem();
if (item == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))
@ -109,40 +108,38 @@ public class ItemEntityEvents
if (entity instanceof Animal)
((Animal) entity).dropLeash(true, true);
if (PickupHandler.canPlayerPickUpEntity((ServerPlayer) player, entity))
if (PickupHandler.canPlayerPickUpEntity((ServerPlayer) player, entity) && ItemCarryonEntity.storeEntityData(entity, world, stack))
{
if (ItemCarryonEntity.storeEntityData(entity, world, stack))
{
LazyOptional<IItemHandler> handler = entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY);
LazyOptional<IItemHandler> handler = entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY);
handler.ifPresent((hand) -> {
for (int i = 0; i < hand.getSlots(); i++)
{
hand.extractItem(i, 64, false);
}
});
handler.ifPresent(hand -> {
for (int i = 0; i < hand.getSlots(); i++)
{
hand.extractItem(i, 64, false);
}
});
CarryOnOverride override = ScriptChecker.inspectEntity(entity);
int overrideHash = 0;
if (override != null)
overrideHash = override.hashCode();
CarryOnOverride override = ScriptChecker.inspectEntity(entity);
int overrideHash = 0;
if (override != null)
overrideHash = override.hashCode();
ItemEvents.sendPacket(player, player.getInventory().selected, overrideHash);
ItemEvents.sendPacket(player, player.getInventory().selected, overrideHash);
if (entity instanceof LivingEntity)
((LivingEntity) entity).setHealth(0);
if (entity instanceof LivingEntity)
((LivingEntity) entity).setHealth(0);
entity.ejectPassengers();
entity.setPos(entity.getX(), 0, entity.getZ());
entity.discard();
player.setItemInHand(InteractionHand.MAIN_HAND, stack);
event.setCanceled(true);
event.setCancellationResult(InteractionResult.FAIL);
}
entity.ejectPassengers();
entity.setPos(entity.getX(), 0, entity.getZ());
entity.discard();
player.setItemInHand(InteractionHand.MAIN_HAND, stack);
event.setCanceled(true);
event.setCancellationResult(InteractionResult.FAIL);
}
}
} else if (!main.isEmpty() && main.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(main) && !CarryOnKeybinds.isKeyPressed(player) && Settings.stackableEntities.get())
}
else if (!main.isEmpty() && main.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(main) && !CarryOnKeybinds.isKeyPressed(player) && Settings.stackableEntities.get())
{
Entity entityHeld = ItemCarryonEntity.getEntity(main, world);
@ -163,11 +160,10 @@ public class ItemEntityEvents
if (Settings.useWhitelistStacking.get() ? ListHandler.isStackingAllowed(topEntity) : !ListHandler.isStackingForbidden(topEntity))
{
double sizeEntity = topEntity.getBbHeight() * topEntity.getBbWidth();
if ((Settings.entitySizeMattersStacking.get() && sizeHeldEntity <= sizeEntity) || !Settings.entitySizeMattersStacking.get())
if (Settings.entitySizeMattersStacking.get() && sizeHeldEntity <= sizeEntity || !Settings.entitySizeMattersStacking.get())
{
if (topEntity instanceof Horse)
if (topEntity instanceof Horse horse)
{
Horse horse = (Horse) topEntity;
horse.setTamed(true);
}
@ -180,7 +176,8 @@ public class ItemEntityEvents
world.addFreshEntity(entityHeld);
entityHeld.startRiding(topEntity, false);
entityHeld.teleportTo(tempX, tempY, tempZ);
} else
}
else
{
entityHeld.setPos(entity.getX(), entity.getY(), entity.getZ());
world.addFreshEntity(entityHeld);
@ -193,16 +190,16 @@ public class ItemEntityEvents
event.setCanceled(true);
event.setCancellationResult(InteractionResult.FAIL);
world.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.HORSE_SADDLE, SoundSource.PLAYERS, 0.5F, 1.5F);
} else
}
else
{
world.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BASS, SoundSource.PLAYERS, 0.5F, 1.5F);
return;
}
}
} else
}
else
{
world.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BASS, SoundSource.PLAYERS, 0.5F, 1.5F);
return;
}
}

View File

@ -77,7 +77,7 @@ public class ItemEvents
{
player.getPersistentData().remove("carrySlot");
event.setUseBlock(Result.DENY);
if (!player.level.isClientSide)
{
CarryOnOverride override = ScriptChecker.getOverride(player);
@ -92,15 +92,14 @@ public class ItemEvents
}
}
@SubscribeEvent(priority = EventPriority.HIGH)
public void onItemDropped(EntityJoinWorldEvent event)
{
Entity e = event.getEntity();
Level world = event.getWorld();
if (e instanceof net.minecraft.world.entity.item.ItemEntity)
if (e instanceof net.minecraft.world.entity.item.ItemEntity eitem)
{
net.minecraft.world.entity.item.ItemEntity eitem = (net.minecraft.world.entity.item.ItemEntity) e;
ItemStack stack = eitem.getItem();
Item item = stack.getItem();
if (item == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack))
@ -134,21 +133,22 @@ public class ItemEvents
eitem.setItem(ItemStack.EMPTY);
}
// BlockPos pos = new BlockPos(Math.floor(eitem.getPosX()), Math.floor(eitem.getPosY()), Math.floor(eitem.getPosZ()));
// if (positions.containsKey(pos))
// {
// event.setCanceled(true);
// }
// BlockPos pos = new BlockPos(Math.floor(eitem.getPosX()),
// Math.floor(eitem.getPosY()), Math.floor(eitem.getPosZ()));
// if (positions.containsKey(pos))
// {
// event.setCanceled(true);
// }
}
}
@SubscribeEvent
public void onPlayerLogin(PlayerLoggedInEvent event)
{
if (event.getPlayer() instanceof Player)
{
Player player = (Player) event.getPlayer();
Player player = event.getPlayer();
Level world = player.getCommandSenderWorld();
ItemStack carried = player.getMainHandItem();
@ -161,7 +161,8 @@ public class ItemEvents
CarryOn.network.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new CarrySlotPacket(player.getInventory().selected, player.getId(), override.hashCode()));
else
CarryOn.network.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new CarrySlotPacket(player.getInventory().selected, player.getId()));
} else
}
else
{
CarryOnOverride override = ScriptChecker.inspectEntity(ItemCarryonEntity.getEntity(carried, world));
if (override != null)
@ -173,25 +174,24 @@ public class ItemEvents
}
}
if(event.getPlayer() instanceof ServerPlayer)
if (event.getPlayer() instanceof ServerPlayer)
{
CarryOn.network.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer)event.getPlayer()), new ScriptReloadPacket(ScriptReader.OVERRIDES.values()));
CarryOn.network.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) event.getPlayer()), new ScriptReloadPacket(ScriptReader.OVERRIDES.values()));
}
}
@SubscribeEvent
public void serverLoad(RegisterCommandsEvent event)
{
CommandCarryOn.register(event.getDispatcher());
}
@SubscribeEvent
public void serverLoad(FMLServerStartingEvent event)
{
CustomPickupOverrideHandler.initPickupOverrides();
}
@SubscribeEvent
public void reloadTags(TagsUpdatedEvent event)
{
@ -204,9 +204,8 @@ public class ItemEvents
Entity e = event.getTarget();
Player tracker = event.getPlayer();
if (e instanceof Player && tracker instanceof ServerPlayer)
if (e instanceof Player player && tracker instanceof ServerPlayer)
{
Player player = (Player) e;
Level world = player.getCommandSenderWorld();
ItemStack carried = player.getMainHandItem();
@ -219,7 +218,8 @@ public class ItemEvents
CarryOn.network.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) tracker), new CarrySlotPacket(player.getInventory().selected, player.getId(), override.hashCode()));
else
CarryOn.network.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) tracker), new CarrySlotPacket(player.getInventory().selected, player.getId()));
} else
}
else
{
CarryOnOverride override = ScriptChecker.inspectEntity(ItemCarryonEntity.getEntity(carried, world));
if (override != null)
@ -271,19 +271,15 @@ public class ItemEvents
public void playerAttack(LivingAttackEvent event)
{
LivingEntity eliving = event.getEntityLiving();
if (eliving instanceof Player && Settings.dropCarriedWhenHit.get())
if (eliving instanceof Player player && Settings.dropCarriedWhenHit.get())
{
Player player = (Player) eliving;
ItemStack stack = player.getMainHandItem();
if (!stack.isEmpty() && (stack.getItem() == RegistrationHandler.itemTile || stack.getItem() == RegistrationHandler.itemEntity))
if (!stack.isEmpty() && (stack.getItem() == RegistrationHandler.itemTile || stack.getItem() == RegistrationHandler.itemEntity) && !player.level.isClientSide)
{
if (!player.level.isClientSide)
{
player.setItemInHand(InteractionHand.MAIN_HAND, ItemStack.EMPTY);
ItemEntity item = new ItemEntity(player.level, player.getX(), player.getY(), player.getZ(), stack);
sendPacket(player, 9, 0);
player.level.addFreshEntity(item);
}
player.setItemInHand(InteractionHand.MAIN_HAND, ItemStack.EMPTY);
ItemEntity item = new ItemEntity(player.level, player.getX(), player.getY(), player.getZ(), stack);
sendPacket(player, 9, 0);
player.level.addFreshEntity(item);
}
}
@ -293,8 +289,8 @@ public class ItemEvents
public static void onBlockRightClick(PlayerInteractEvent.RightClickBlock event)
{
Player player = event.getPlayer();
if(event.isCanceled())
if (event.isCanceled())
return;
if (!player.level.isClientSide)
@ -315,8 +311,7 @@ public class ItemEvents
if (PickupHandler.canPlayerPickUpBlock((ServerPlayer) player, te, world, pos))
{
player.closeContainer();
world.levelEvent(1010, pos, 0);
world.levelEvent(1010, pos, 0);
if (ItemCarryonBlock.storeTileData(te, world, pos, state, stack))
{
@ -342,19 +337,21 @@ public class ItemEvents
event.setUseItem(Result.DENY);
event.setCanceled(true);
success = true;
} catch (Exception e)
}
catch (Exception e)
{
try
{
sendPacket(player, player.getInventory().selected, overrideHash);
emptyTileEntity(te);
world.removeBlock(pos,false);
world.removeBlock(pos, false);
player.setItemInHand(InteractionHand.MAIN_HAND, stack);
event.setUseBlock(Result.DENY);
event.setUseItem(Result.DENY);
event.setCanceled(true);
success = true;
} catch (Exception ex)
}
catch (Exception ex)
{
sendPacket(player, 9, 0);
world.setBlockAndUpdate(pos, statee);
@ -393,7 +390,7 @@ public class ItemEvents
{
LazyOptional<IItemHandler> itemHandler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing);
itemHandler.ifPresent((handler) -> {
itemHandler.ifPresent(handler -> {
for (int i = 0; i < handler.getSlots(); i++)
{
@ -406,7 +403,7 @@ public class ItemEvents
LazyOptional<IItemHandler> itemHandler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
itemHandler.ifPresent((handler) -> {
itemHandler.ifPresent(handler -> {
for (int i = 0; i < handler.getSlots(); i++)
{
@ -415,15 +412,13 @@ public class ItemEvents
});
if (te instanceof Container)
if (te instanceof Container inv)
{
Container inv = (Container) te;
inv.clearContent();
}
if (te instanceof IItemHandler)
if (te instanceof IItemHandler itemHandler1)
{
IItemHandler itemHandler1 = (IItemHandler) te;
for (int i = 0; i < itemHandler1.getSlots(); i++)
{
itemHandler1.extractItem(i, 64, false);
@ -454,7 +449,7 @@ public class ItemEvents
ItemEntity item = new ItemEntity(world, 0, 0, 0, stack);
BlockPos pos = null;
Optional<BlockPos> bedpos = original.getSleepingPos();
if(bedpos.isPresent())
if (bedpos.isPresent())
pos = bedpos.get();
if (pos == null)
pos = player.blockPosition();
@ -468,54 +463,44 @@ public class ItemEvents
public void dropNonHotbarItems(LivingUpdateEvent event)
{
LivingEntity entity = event.getEntityLiving();
if (entity instanceof Player)
if (entity instanceof Player player && !entity.level.isClientSide)
{
Player player = (Player) entity;
boolean hasCarried = player.getInventory().contains(new ItemStack(RegistrationHandler.itemTile)) || player.getInventory().contains(new ItemStack(RegistrationHandler.itemEntity));
ItemStack inHand = player.getMainHandItem();
if (!entity.level.isClientSide)
if (hasCarried && inHand.getItem() != RegistrationHandler.itemTile && inHand.getItem() != RegistrationHandler.itemEntity && player.getDimensionChangingDelay() == 0)
{
boolean hasCarried = player.getInventory().contains(new ItemStack(RegistrationHandler.itemTile)) || player.getInventory().contains(new ItemStack(RegistrationHandler.itemEntity));
ItemStack inHand = player.getMainHandItem();
int slotBlock = this.getSlot(player, RegistrationHandler.itemTile);
int slotEntity = this.getSlot(player, RegistrationHandler.itemEntity);
if (hasCarried)
ItemEntity item = null;
if (slotBlock != -1)
{
if ((inHand.getItem() != RegistrationHandler.itemTile && inHand.getItem() != RegistrationHandler.itemEntity) && player.getDimensionChangingDelay() == 0)
{
int slotBlock = getSlot(player, RegistrationHandler.itemTile);
int slotEntity = getSlot(player, RegistrationHandler.itemEntity);
ItemEntity item = null;
if (slotBlock != -1)
{
ItemStack dropped = player.getInventory().removeItemNoUpdate(slotBlock);
item = new ItemEntity(player.level, player.getX(), player.getY(), player.getZ(), dropped);
}
if (slotEntity != -1)
{
ItemStack dropped = player.getInventory().removeItemNoUpdate(slotEntity);
item = new ItemEntity(player.level, player.getX(), player.getY(), player.getZ(), dropped);
}
if (item != null)
{
player.level.addFreshEntity(item);
sendPacket(player, 9, 0);
}
}
ItemStack dropped = player.getInventory().removeItemNoUpdate(slotBlock);
item = new ItemEntity(player.level, player.getX(), player.getY(), player.getZ(), dropped);
}
CarryOnOverride override = ScriptChecker.getOverride(player);
if (override != null)
if (slotEntity != -1)
{
String command = override.getCommandLoop();
if (command != null)
player.getServer().getCommands().performCommand(player.getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().getName() + " run " + command);
ItemStack dropped = player.getInventory().removeItemNoUpdate(slotEntity);
item = new ItemEntity(player.level, player.getX(), player.getY(), player.getZ(), dropped);
}
if (item != null)
{
player.level.addFreshEntity(item);
sendPacket(player, 9, 0);
}
}
CarryOnOverride override = ScriptChecker.getOverride(player);
if (override != null)
{
String command = override.getCommandLoop();
if (command != null)
player.getServer().getCommands().performCommand(player.getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().getName() + " run " + command);
}
}
}
@ -541,7 +526,8 @@ public class ItemEvents
{
player.getPersistentData().remove("carrySlot");
player.getPersistentData().remove("overrideKey");
} else
}
else
{
player.getPersistentData().putInt("carrySlot", currentItem);
if (hash != 0)

View File

@ -17,8 +17,8 @@ import tschipp.carryon.common.helper.InvalidConfigException;
public class CustomPickupOverrideHandler
{
public static HashMap<String, String> PICKUP_CONDITIONS = new HashMap<String, String>();
public static HashMap<String, String> PICKUP_CONDITIONS_ENTITIES = new HashMap<String, String>();
public static HashMap<String, String> PICKUP_CONDITIONS = new HashMap<>();
public static HashMap<String, String> PICKUP_CONDITIONS_ENTITIES = new HashMap<>();
@SuppressWarnings("unchecked")
public static void initPickupOverrides()
@ -78,13 +78,12 @@ public class CustomPickupOverrideHandler
}
}
public static boolean hasSpecialPickupConditions(BlockState state)
{
if (!ModList.get().isLoaded("gamestages"))
return false;
for(String cond : PICKUP_CONDITIONS.keySet())
for (String cond : PICKUP_CONDITIONS.keySet())
{
BlockStateParser parser = new BlockStateParser(new StringReader(cond), false);
try
@ -94,16 +93,16 @@ public class CustomPickupOverrideHandler
catch (CommandSyntaxException e)
{
}
if(parser.getState() == state)
if (parser.getState() == state)
return true;
}
return false;
}
public static String getPickupCondition(BlockState state)
{
for(String cond : PICKUP_CONDITIONS.keySet())
for (String cond : PICKUP_CONDITIONS.keySet())
{
BlockStateParser parser = new BlockStateParser(new StringReader(cond), false);
try
@ -113,7 +112,7 @@ public class CustomPickupOverrideHandler
catch (CommandSyntaxException e)
{
}
if(parser.getState() == state)
if (parser.getState() == state)
return PICKUP_CONDITIONS.get(cond);
}
return null;
@ -125,17 +124,13 @@ public class CustomPickupOverrideHandler
return false;
String name = entity.getType().getRegistryName().toString();
boolean condition = PICKUP_CONDITIONS_ENTITIES.containsKey(name);
return condition;
return PICKUP_CONDITIONS_ENTITIES.containsKey(name);
}
public static String getPickupCondition(Entity entity)
{
String name = entity.getType().getRegistryName().toString();
String condition = PICKUP_CONDITIONS_ENTITIES.get(name);
return condition;
return PICKUP_CONDITIONS_ENTITIES.get(name);
}
}

View File

@ -22,11 +22,11 @@ public class ListHandler
public static List<String> ALLOWED_ENTITIES = new ArrayList<>();
public static List<String> ALLOWED_TILES = new ArrayList<>();
public static List<String> FORBIDDEN_STACKING = new ArrayList<>();
public static List<String> ALLOWED_STACKING = new ArrayList<>();
public static List<String> ALLOWED_STACKING = new ArrayList<>();
public static List<Tag<Block>> FORBIDDEN_TILES_TAGS = new ArrayList<>();
public static List<Tag<EntityType<?>>> FORBIDDEN_ENTITIES_TAGS = new ArrayList<>();
public static List<Tag<EntityType<?>>> ALLOWED_ENTITIES_TAGS = new ArrayList<>();
public static List<Tag<EntityType<?>>> ALLOWED_ENTITIES_TAGS = new ArrayList<>();
public static List<Tag<Block>> ALLOWED_TILES_TAGS = new ArrayList<>();
public static List<Tag<EntityType<?>>> FORBIDDEN_STACKING_TAGS = new ArrayList<>();
public static List<Tag<EntityType<?>>> ALLOWED_STACKING_TAGS = new ArrayList<>();
@ -48,10 +48,10 @@ public class ListHandler
contains = true;
}
}
for(Tag<Block> tag : FORBIDDEN_TILES_TAGS)
for (Tag<Block> tag : FORBIDDEN_TILES_TAGS)
{
if(tag.contains(block))
if (tag.contains(block))
return true;
}
@ -63,13 +63,13 @@ public class ListHandler
{
String name = entity.getType().getRegistryName().toString();
boolean contains = FORBIDDEN_ENTITIES.contains(name);
for(Tag<EntityType<?>> tag : FORBIDDEN_ENTITIES_TAGS)
for (Tag<EntityType<?>> tag : FORBIDDEN_ENTITIES_TAGS)
{
if(tag.contains(entity.getType()))
if (tag.contains(entity.getType()))
return true;
}
return contains;
}
@ -77,13 +77,13 @@ public class ListHandler
{
String name = entity.getType().getRegistryName().toString();
boolean contains = ALLOWED_ENTITIES.contains(name);
for(Tag<EntityType<?>> tag : ALLOWED_ENTITIES_TAGS)
for (Tag<EntityType<?>> tag : ALLOWED_ENTITIES_TAGS)
{
if(tag.contains(entity.getType()))
if (tag.contains(entity.getType()))
return true;
}
return contains;
}
@ -91,13 +91,13 @@ public class ListHandler
{
String name = entity.getType().getRegistryName().toString();
boolean contains = FORBIDDEN_STACKING.contains(name);
for(Tag<EntityType<?>> tag : FORBIDDEN_STACKING_TAGS)
for (Tag<EntityType<?>> tag : FORBIDDEN_STACKING_TAGS)
{
if(tag.contains(entity.getType()))
if (tag.contains(entity.getType()))
return true;
}
return contains;
}
@ -105,13 +105,13 @@ public class ListHandler
{
String name = entity.getType().getRegistryName().toString();
boolean contains = ALLOWED_STACKING.contains(name);
for(Tag<EntityType<?>> tag : ALLOWED_STACKING_TAGS)
for (Tag<EntityType<?>> tag : ALLOWED_STACKING_TAGS)
{
if(tag.contains(entity.getType()))
if (tag.contains(entity.getType()))
return true;
}
return contains;
}
@ -132,10 +132,10 @@ public class ListHandler
contains = true;
}
}
for(Tag<Block> tag : ALLOWED_TILES_TAGS)
for (Tag<Block> tag : ALLOWED_TILES_TAGS)
{
if(tag.contains(block))
if (tag.contains(block))
return true;
}
@ -145,7 +145,7 @@ public class ListHandler
}
public static void initConfigLists()
{
{
FORBIDDEN_ENTITIES.clear();
FORBIDDEN_ENTITIES_TAGS.clear();
FORBIDDEN_STACKING.clear();
@ -158,10 +158,10 @@ public class ListHandler
ALLOWED_STACKING_TAGS.clear();
ALLOWED_TILES.clear();
ALLOWED_TILES_TAGS.clear();
List<String> forbidden = new ArrayList<>(Blacklist.forbiddenTiles.get());
forbidden.add("#carryon:block_blacklist");
FORBIDDEN_TILES = new ArrayList<String>();
FORBIDDEN_TILES = new ArrayList<>();
for (int i = 0; i < forbidden.size(); i++)
{
@ -171,7 +171,7 @@ public class ListHandler
List<String> forbiddenEntity = new ArrayList<>(Blacklist.forbiddenEntities.get());
forbiddenEntity.add("#carryon:entity_blacklist");
FORBIDDEN_ENTITIES = new ArrayList<String>();
FORBIDDEN_ENTITIES = new ArrayList<>();
for (int i = 0; i < forbiddenEntity.size(); i++)
{
@ -196,7 +196,7 @@ public class ListHandler
List<String> allowedEntities = new ArrayList<>(WhiteList.allowedEntities.get());
allowedEntities.add("#carryon:entity_whitelist");
ALLOWED_ENTITIES = new ArrayList<String>();
ALLOWED_ENTITIES = new ArrayList<>();
for (int i = 0; i < allowedEntities.size(); i++)
{
if (!allowedEntities.get(i).startsWith("#"))
@ -220,7 +220,7 @@ public class ListHandler
List<String> allowedBlocks = new ArrayList<>(WhiteList.allowedBlocks.get());
allowedBlocks.add("#carryon:block_whitelist");
ALLOWED_TILES = new ArrayList<String>();
ALLOWED_TILES = new ArrayList<>();
for (int i = 0; i < allowedBlocks.size(); i++)
{
if (!allowedBlocks.get(i).startsWith("#"))
@ -229,7 +229,7 @@ public class ListHandler
List<String> forbiddenStacking = new ArrayList<>(Blacklist.forbiddenStacking.get());
forbiddenStacking.add("#carryon:stacking_blacklist");
FORBIDDEN_STACKING = new ArrayList<String>();
FORBIDDEN_STACKING = new ArrayList<>();
for (int i = 0; i < forbiddenStacking.size(); i++)
{
@ -254,7 +254,7 @@ public class ListHandler
List<String> allowedStacking = new ArrayList<>(WhiteList.allowedStacking.get());
allowedStacking.add("#carryon:stacking_whitelist");
ALLOWED_STACKING = new ArrayList<String>();
ALLOWED_STACKING = new ArrayList<>();
for (int i = 0; i < allowedStacking.size(); i++)
{
if (!allowedStacking.get(i).startsWith("#"))
@ -280,63 +280,63 @@ public class ListHandler
TagCollection<EntityType<?>> entitytags = EntityTypeTags.getAllTags();
System.out.println(blocktags.getAvailableTags());
for (String s : forbidden)
{
if (s.startsWith("#"))
{
String sub = s.substring(1, s.length());
String sub = s.substring(1);
Tag<Block> tag = blocktags.getTag(new ResourceLocation(sub));
if (tag != null)
FORBIDDEN_TILES_TAGS.add(tag);
}
}
for (String s : allowedBlocks)
{
if (s.startsWith("#"))
{
Tag<Block> tag = blocktags.getTag(new ResourceLocation(s.substring(1, s.length())));
Tag<Block> tag = blocktags.getTag(new ResourceLocation(s.substring(1)));
if (tag != null)
ALLOWED_TILES_TAGS.add(tag);
}
}
for (String s : forbiddenEntity)
{
if (s.startsWith("#"))
{
Tag<EntityType<?>> tag = entitytags.getTag(new ResourceLocation(s.substring(1, s.length())));
Tag<EntityType<?>> tag = entitytags.getTag(new ResourceLocation(s.substring(1)));
if (tag != null)
FORBIDDEN_ENTITIES_TAGS.add(tag);
}
}
for (String s : allowedEntities)
{
if (s.startsWith("#"))
{
Tag<EntityType<?>> tag = entitytags.getTag(new ResourceLocation(s.substring(1, s.length())));
Tag<EntityType<?>> tag = entitytags.getTag(new ResourceLocation(s.substring(1)));
if (tag != null)
ALLOWED_ENTITIES_TAGS.add(tag);
}
}
for (String s : forbiddenStacking)
{
if (s.startsWith("#"))
{
Tag<EntityType<?>> tag = entitytags.getTag(new ResourceLocation(s.substring(1, s.length())));
Tag<EntityType<?>> tag = entitytags.getTag(new ResourceLocation(s.substring(1)));
if (tag != null)
FORBIDDEN_STACKING_TAGS.add(tag);
}
}
for (String s : allowedStacking)
{
if (s.startsWith("#"))
{
Tag<EntityType<?>> tag = entitytags.getTag(new ResourceLocation(s.substring(1, s.length())));
Tag<EntityType<?>> tag = entitytags.getTag(new ResourceLocation(s.substring(1)));
if (tag != null)
ALLOWED_STACKING_TAGS.add(tag);
}

View File

@ -25,12 +25,12 @@ import tschipp.carryon.common.helper.StringParser;
public class ModelOverridesHandler
{
public static HashMap<CompoundTag, Object> OVERRIDE_OBJECTS = new HashMap<CompoundTag, Object>();
public static HashMap<CompoundTag, Object> OVERRIDE_OBJECTS = new HashMap<>();
/*
* This class is really ugly, will probably be replaced by something else -
* Tschipp
*/
*/
public static void parseOverride(String overrideString, int i)
{
boolean errored = false;
@ -94,7 +94,7 @@ public class ModelOverridesHandler
}
overridetype = override.substring(0, override.indexOf(")") + 1);
override =override.replace(overridetype, "");
override = override.replace(overridetype, "");
overridetype = overridetype.replace("(", "");
overridetype = overridetype.replace(")", "");
@ -116,7 +116,7 @@ public class ModelOverridesHandler
if ((ModList.get().isLoaded(modidOverride) || modidOverride.equals("minecraft")) && (ModList.get().isLoaded(modidToOverride) || modidToOverride.equals("minecraft")) && !errored)
{
toOverrideObject = StringParser.getBlockState(toOverride);
toOverrideObject = StringParser.getBlockState(toOverride);
if (toOverrideObject != null)
{
@ -143,8 +143,7 @@ public class ModelOverridesHandler
}
}
}
public static void initOverrides()
{
@SuppressWarnings("unchecked")
@ -233,7 +232,7 @@ public class ModelOverridesHandler
return null;
}
public static Object getOverrideObject(BlockState state, CompoundTag tag)
{
int stateid = Block.getId(state);
@ -259,8 +258,7 @@ public class ModelOverridesHandler
}
if (flag)
{
Object override = OVERRIDE_OBJECTS.get(key);
return override;
return OVERRIDE_OBJECTS.get(key);
}
}
}

View File

@ -30,20 +30,19 @@ public class PickupHandler
{
public static boolean canPlayerPickUpBlock(ServerPlayer player, @Nullable BlockEntity tile, Level world, BlockPos pos)
{
if(player.gameMode.getGameModeForPlayer() == GameType.SPECTATOR || player.gameMode.getGameModeForPlayer() == GameType.ADVENTURE)
{
if (player.gameMode.getGameModeForPlayer() == GameType.SPECTATOR || player.gameMode.getGameModeForPlayer() == GameType.ADVENTURE)
return false;
BlockState state = world.getBlockState(pos);
CompoundTag tag = new CompoundTag();
if (tile != null)
tile.save(tag);
CarryOnOverride override = ScriptChecker.inspectBlock(world.getBlockState(pos), world, pos, tag);
if (override != null)
{
return (ScriptChecker.fulfillsConditions(override, player)) && handleProtections((ServerPlayer) player, world, pos, state);
return ScriptChecker.fulfillsConditions(override, player) && handleProtections(player, world, pos, state);
}
else
{
@ -54,35 +53,28 @@ public class PickupHandler
return false;
}
}
else
else if (ListHandler.isForbidden(world.getBlockState(pos).getBlock()))
{
if (ListHandler.isForbidden(world.getBlockState(pos).getBlock()))
{
return false;
}
return false;
}
if ((state.getDestroySpeed(world, pos) != -1 || player.isCreative()))
if (state.getDestroySpeed(world, pos) != -1 || player.isCreative())
{
double distance = Vec3.atLowerCornerOf(pos).distanceTo(player.position());
double maxDist = Settings.maxDistance.get();
if (distance < maxDist)
if (distance < maxDist && !ItemCarryonBlock.isLocked(pos, world))
{
if (!ItemCarryonBlock.isLocked(pos, world))
if (CustomPickupOverrideHandler.hasSpecialPickupConditions(state))
{
if (CustomPickupOverrideHandler.hasSpecialPickupConditions(state))
{
return CarryonGamestageHelper.hasGamestage(CustomPickupOverrideHandler.getPickupCondition(state), player) && handleProtections((ServerPlayer) player, world, pos, state);
}
else if (Settings.pickupAllBlocks.get() ? true : tile != null)
{
return handleProtections(player, world, pos, state);
}
return CarryonGamestageHelper.hasGamestage(CustomPickupOverrideHandler.getPickupCondition(state), player) && handleProtections(player, world, pos, state);
}
else if (Settings.pickupAllBlocks.get() ? true : tile != null)
{
return handleProtections(player, world, pos, state);
}
}
}
}
@ -92,9 +84,9 @@ public class PickupHandler
public static boolean canPlayerPickUpEntity(ServerPlayer player, Entity toPickUp)
{
if(player.gameMode.getGameModeForPlayer() == GameType.SPECTATOR || player.gameMode.getGameModeForPlayer() == GameType.ADVENTURE)
if (player.gameMode.getGameModeForPlayer() == GameType.SPECTATOR || player.gameMode.getGameModeForPlayer() == GameType.ADVENTURE)
return false;
Vec3 pos = toPickUp.position();
if (toPickUp instanceof Player)
@ -103,34 +95,23 @@ public class PickupHandler
CarryOnOverride override = ScriptChecker.inspectEntity(toPickUp);
if (override != null)
{
return (ScriptChecker.fulfillsConditions(override, player)) && handleProtections(player, toPickUp);
return ScriptChecker.fulfillsConditions(override, player) && handleProtections(player, toPickUp);
}
else
{
if (toPickUp instanceof AgeableMob && Settings.allowBabies.get())
if (toPickUp instanceof AgeableMob living && Settings.allowBabies.get() && (living.getAge() < 0 || living.isBaby()))
{
AgeableMob living = (AgeableMob) toPickUp;
if (living.getAge() < 0 || living.isBaby())
double distance = pos.distanceToSqr(player.position());
if (distance <= Math.pow(Settings.maxDistance.get(), 2) && toPickUp instanceof TamableAnimal tame && tame.getOwnerUUID() != null && tame.getOwnerUUID() != Player.createPlayerUUID(player.getGameProfile()))
return false;
if (CustomPickupOverrideHandler.hasSpecialPickupConditions(toPickUp))
{
double distance = pos.distanceToSqr(player.position());
if (distance <= Math.pow(Settings.maxDistance.get(), 2))
{
if (toPickUp instanceof TamableAnimal)
{
TamableAnimal tame = (TamableAnimal) toPickUp;
if (tame.getOwnerUUID() != null && tame.getOwnerUUID() != Player.createPlayerUUID(player.getGameProfile()))
return false;
}
}
if (CustomPickupOverrideHandler.hasSpecialPickupConditions(toPickUp))
{
return CarryonGamestageHelper.hasGamestage(CustomPickupOverrideHandler.getPickupCondition(toPickUp), player) && handleProtections((ServerPlayer) player, toPickUp);
}
else
return handleProtections((ServerPlayer) player, toPickUp);
return CarryonGamestageHelper.hasGamestage(CustomPickupOverrideHandler.getPickupCondition(toPickUp), player) && handleProtections(player, toPickUp);
}
else
return handleProtections(player, toPickUp);
}
if (Settings.useWhitelistEntities.get())
@ -140,44 +121,35 @@ public class PickupHandler
return false;
}
}
else
else if (ListHandler.isForbidden(toPickUp))
{
if (ListHandler.isForbidden(toPickUp))
{
return false;
}
return false;
}
if ((Settings.pickupHostileMobs.get() ? true : toPickUp.getType().getCategory() != MobCategory.MONSTER || player.isCreative()))
if ((Settings.pickupHostileMobs.get() ? true : toPickUp.getType().getCategory() != MobCategory.MONSTER || player.isCreative()) && (Settings.pickupHostileMobs.get() ? true : toPickUp.getType().getCategory() != MobCategory.MONSTER || player.isCreative()))
{
if ((Settings.pickupHostileMobs.get() ? true : toPickUp.getType().getCategory() != MobCategory.MONSTER || player.isCreative()))
if (toPickUp.getBbHeight() <= Settings.maxEntityHeight.get() && toPickUp.getBbWidth() <= Settings.maxEntityWidth.get() || player.isCreative())
{
if ((toPickUp.getBbHeight() <= Settings.maxEntityHeight.get() && toPickUp.getBbWidth() <= Settings.maxEntityWidth.get() || player.isCreative()))
double distance = pos.distanceToSqr(player.position());
if (distance < Math.pow(Settings.maxDistance.get(), 2))
{
double distance = pos.distanceToSqr(player.position());
if (distance < Math.pow(Settings.maxDistance.get(), 2))
if (toPickUp instanceof TamableAnimal tame)
{
if (toPickUp instanceof TamableAnimal)
{
TamableAnimal tame = (TamableAnimal) toPickUp;
UUID owner = tame.getOwnerUUID();
UUID playerID = Player.createPlayerUUID(player.getGameProfile());
if (owner != null && !owner.equals(playerID))
return false;
}
if (CustomPickupOverrideHandler.hasSpecialPickupConditions(toPickUp))
{
return CarryonGamestageHelper.hasGamestage(CustomPickupOverrideHandler.getPickupCondition(toPickUp), player) && handleProtections((ServerPlayer) player, toPickUp);
}
else
return handleProtections((ServerPlayer) player, toPickUp);
UUID owner = tame.getOwnerUUID();
UUID playerID = Player.createPlayerUUID(player.getGameProfile());
if (owner != null && !owner.equals(playerID))
return false;
}
if (CustomPickupOverrideHandler.hasSpecialPickupConditions(toPickUp))
{
return CarryonGamestageHelper.hasGamestage(CustomPickupOverrideHandler.getPickupCondition(toPickUp), player) && handleProtections(player, toPickUp);
}
else
return handleProtections(player, toPickUp);
}
}
}
}
}
@ -189,9 +161,9 @@ public class PickupHandler
public PickUpBlockEvent(Level world, BlockPos pos, BlockState state, Player player)
{
super(world, pos, state, player);
}
}
}
public static class PickUpEntityEvent extends AttackEntityEvent
{
public PickUpEntityEvent(Player player, Entity target)
@ -199,7 +171,7 @@ public class PickupHandler
super(player, target);
}
}
private static boolean handleProtections(ServerPlayer player, Level world, BlockPos pos, BlockState state)
{
boolean breakable = true;

View File

@ -19,10 +19,10 @@ import tschipp.carryon.common.item.ItemCarryonEntity;
@EventBusSubscriber(modid = CarryOn.MODID)
public class RegistrationHandler
{
{
@ObjectHolder("carryon:tile_item")
public static Item itemTile;
@ObjectHolder("carryon:entity_item")
public static Item itemEntity;
@ -31,7 +31,7 @@ public class RegistrationHandler
itemTile = new ItemCarryonBlock();
itemEntity = new ItemCarryonEntity();
}
public static void regCommonEvents()
{
MinecraftForge.EVENT_BUS.register(new ItemEvents());
@ -39,32 +39,28 @@ public class RegistrationHandler
MinecraftForge.EVENT_BUS.register(new PositionCommonEvents());
MinecraftForge.EVENT_BUS.register(new IMCEvents());
}
public static void regClientEvents()
{
MinecraftForge.EVENT_BUS.register(new RenderEvents());
MinecraftForge.EVENT_BUS.register(new RenderEntityEvents());
MinecraftForge.EVENT_BUS.register(new PositionClientEvents());
// if(ModList.get().isLoaded("obfuscate"))
// MinecraftForge.EVENT_BUS.register(new ObfuscateEvents());
// if(ModList.get().isLoaded("obfuscate"))
// MinecraftForge.EVENT_BUS.register(new ObfuscateEvents());
}
public static void regOverrideList()
{
ModelOverridesHandler.initOverrides();
CustomPickupOverrideHandler.initPickupOverrides();
// ListHandler.initConfigLists();
// ListHandler.initConfigLists();
}
public static void regCaps()
{
CapabilityManager.INSTANCE.register(IPosition.class);
}
}

View File

@ -7,7 +7,7 @@ public class CarryonGamestageHelper
{
public static boolean hasGamestage(String stage, Player player)
{
// return GameStageHelper.hasStage(player, stage);
// return GameStageHelper.hasStage(player, stage);
return true;
}
}

View File

@ -19,15 +19,15 @@ public class InvalidConfigException extends Exception
{
StackTraceElement element = this.getStackTrace()[i];
CarryOn.LOGGER.error(element.toString());
if(i >= 10)
if (i >= 10)
{
CarryOn.LOGGER.error((this.getStackTrace().length - 10) + " more...");
CarryOn.LOGGER.error(this.getStackTrace().length - 10 + " more...");
break;
}
}
CarryOn.LOGGER.info("");
}
}

View File

@ -14,7 +14,7 @@ public class KeyboardCallbackWrapper
public void setup(Minecraft mc)
{
oldCallback = GLFW.glfwSetKeyCallback(mc.getWindow().getWindow(), this::keyCallback);
this.oldCallback = GLFW.glfwSetKeyCallback(mc.getWindow().getWindow(), this::keyCallback);
}
private void keyCallback(long window, int key, int scancode, int action, int mods)
@ -25,21 +25,21 @@ public class KeyboardCallbackWrapper
if (event.isCanceled())
return;
if (oldCallback != null)
oldCallback.invoke(window, key, scancode, action, mods);
if (this.oldCallback != null)
this.oldCallback.invoke(window, key, scancode, action, mods);
}
@Cancelable
public static class KeyPressedEvent extends Event
{
public int key;
public int scancode;
public KeyPressedEvent(int key, int scancode)
{
this.key = key;
this.scancode = scancode;
}
}
}

View File

@ -25,6 +25,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import com.google.common.base.Preconditions;
/**
* Some reflection helper code.
*
@ -33,214 +34,230 @@ import com.google.common.base.Preconditions;
*/
public class ReflectionHelper
{
public static class UnableToFindMethodException extends RuntimeException
{
private static final long serialVersionUID = 1L;
//private String[] methodNames;
public static class UnableToFindMethodException extends RuntimeException
{
private static final long serialVersionUID = 1L;
// private String[] methodNames;
public UnableToFindMethodException(String[] methodNames, Exception failed)
{
super(failed);
//this.methodNames = methodNames;
}
public UnableToFindMethodException(String[] methodNames, Exception failed)
{
super(failed);
// this.methodNames = methodNames;
}
public UnableToFindMethodException(Throwable failed)
{
super(failed);
}
public UnableToFindMethodException(Throwable failed)
{
super(failed);
}
}
}
public static class UnableToFindClassException extends RuntimeException
{
private static final long serialVersionUID = 1L;
//private String[] classNames;
public static class UnableToFindClassException extends RuntimeException
{
private static final long serialVersionUID = 1L;
// private String[] classNames;
public UnableToFindClassException(String[] classNames, @Nullable Exception err)
{
super(err);
//this.classNames = classNames;
}
public UnableToFindClassException(String[] classNames, @Nullable Exception err)
{
super(err);
// this.classNames = classNames;
}
}
}
public static class UnableToAccessFieldException extends RuntimeException
{
private static final long serialVersionUID = 1L;
//private String[] fieldNameList;
public static class UnableToAccessFieldException extends RuntimeException
{
private static final long serialVersionUID = 1L;
// private String[] fieldNameList;
public UnableToAccessFieldException(String[] fieldNames, Exception e)
{
super(e);
//this.fieldNameList = fieldNames;
}
}
public UnableToAccessFieldException(String[] fieldNames, Exception e)
{
super(e);
// this.fieldNameList = fieldNames;
}
}
public static class UnableToFindFieldException extends RuntimeException
{
private static final long serialVersionUID = 1L;
//private String[] fieldNameList;
public UnableToFindFieldException(String[] fieldNameList, Exception e)
{
super(e);
//this.fieldNameList = fieldNameList;
}
}
public static class UnableToFindFieldException extends RuntimeException
{
private static final long serialVersionUID = 1L;
@SuppressWarnings("serial")
// private String[] fieldNameList;
public UnableToFindFieldException(String[] fieldNameList, Exception e)
{
super(e);
// this.fieldNameList = fieldNameList;
}
}
@SuppressWarnings("serial")
public static class UnknownConstructorException extends RuntimeException
{
public UnknownConstructorException(final String message)
{
super(message);
}
}
{
public UnknownConstructorException(final String message)
{
super(message);
}
}
public static Field findField(Class<?> clazz, String... fieldNames)
{
Exception failed = null;
for (String fieldName : fieldNames)
{
try
{
Field f = clazz.getDeclaredField(fieldName);
f.setAccessible(true);
return f;
}
catch (Exception e)
{
failed = e;
}
}
throw new UnableToFindFieldException(fieldNames, failed);
}
public static Field findField(Class<?> clazz, String... fieldNames)
{
Exception failed = null;
for (String fieldName : fieldNames)
{
try
{
Field f = clazz.getDeclaredField(fieldName);
f.setAccessible(true);
return f;
}
catch (Exception e)
{
failed = e;
}
}
throw new UnableToFindFieldException(fieldNames, failed);
}
@SuppressWarnings("unchecked")
public static <T, E> T getPrivateValue(Class <? super E > classToAccess, @Nullable E instance, int fieldIndex)
{
try
{
Field f = classToAccess.getDeclaredFields()[fieldIndex];
f.setAccessible(true);
return (T) f.get(instance);
}
catch (Exception e)
{
throw new UnableToAccessFieldException(new String[0], e);
}
}
@SuppressWarnings("unchecked")
public static <T, E> T getPrivateValue(Class<? super E> classToAccess, @Nullable E instance, int fieldIndex)
{
try
{
Field f = classToAccess.getDeclaredFields()[fieldIndex];
f.setAccessible(true);
return (T) f.get(instance);
}
catch (Exception e)
{
throw new UnableToAccessFieldException(new String[0], e);
}
}
@SuppressWarnings("unchecked")
public static <T, E> T getPrivateValue(Class <? super E > classToAccess, E instance, String... fieldNames)
{
try
{
return (T) findField(classToAccess, fieldNames).get(instance);
}
catch (Exception e)
{
throw new UnableToAccessFieldException(fieldNames, e);
}
}
@SuppressWarnings("unchecked")
public static <T, E> T getPrivateValue(Class<? super E> classToAccess, E instance, String... fieldNames)
{
try
{
return (T) findField(classToAccess, fieldNames).get(instance);
}
catch (Exception e)
{
throw new UnableToAccessFieldException(fieldNames, e);
}
}
public static <T, E> void setPrivateValue(Class <? super T > classToAccess, T instance, E value, int fieldIndex)
{
try
{
Field f = classToAccess.getDeclaredFields()[fieldIndex];
f.setAccessible(true);
f.set(instance, value);
}
catch (Exception e)
{
throw new UnableToAccessFieldException(new String[0] , e);
}
}
public static <T, E> void setPrivateValue(Class<? super T> classToAccess, T instance, E value, int fieldIndex)
{
try
{
Field f = classToAccess.getDeclaredFields()[fieldIndex];
f.setAccessible(true);
f.set(instance, value);
}
catch (Exception e)
{
throw new UnableToAccessFieldException(new String[0], e);
}
}
public static <T, E> void setPrivateValue(Class <? super T > classToAccess, T instance, E value, String... fieldNames)
{
try
{
findField(classToAccess, fieldNames).set(instance, value);
}
catch (Exception e)
{
throw new UnableToAccessFieldException(fieldNames, e);
}
}
public static <T, E> void setPrivateValue(Class<? super T> classToAccess, T instance, E value, String... fieldNames)
{
try
{
findField(classToAccess, fieldNames).set(instance, value);
}
catch (Exception e)
{
throw new UnableToAccessFieldException(fieldNames, e);
}
}
@SuppressWarnings("unchecked")
public static Class<? super Object> getClass(ClassLoader loader, String... classNames)
{
Exception err = null;
for (String className : classNames)
{
try
{
return (Class<? super Object>) Class.forName(className, false, loader);
}
catch (Exception e)
{
err = e;
}
}
@SuppressWarnings("unchecked")
public static Class<? super Object> getClass(ClassLoader loader, String... classNames)
{
Exception err = null;
for (String className : classNames)
{
try
{
return (Class<? super Object>) Class.forName(className, false, loader);
}
catch (Exception e)
{
err = e;
}
}
throw new UnableToFindClassException(classNames, err);
}
throw new UnableToFindClassException(classNames, err);
}
/**
* Finds a method with the specified name and parameters in the given class and makes it accessible.
* Note: for performance, store the returned value and avoid calling this repeatedly.
* <p>
* Throws an exception if the method is not found.
*
* @param clazz The class to find the method on.
* @param methodName The name of the method to find (used in developer environments, i.e. "getWorldTime").
* @param methodObfName The obfuscated name of the method to find (used in obfuscated environments, i.e. "getWorldTime").
* If the name you are looking for is on a class that is never obfuscated, this should be null.
* @param parameterTypes The parameter types of the method to find.
* @return The method with the specified name and parameters in the given class.
*/
/**
* Finds a method with the specified name and parameters in the given class
* and makes it accessible. Note: for performance, store the returned value
* and avoid calling this repeatedly.
* <p>
* Throws an exception if the method is not found.
*
* @param clazz
* The class to find the method on.
* @param methodName
* The name of the method to find (used in developer
* environments, i.e. "getWorldTime").
* @param methodObfName
* The obfuscated name of the method to find (used in obfuscated
* environments, i.e. "getWorldTime"). If the name you are
* looking for is on a class that is never obfuscated, this
* should be null.
* @param parameterTypes
* The parameter types of the method to find.
* @return The method with the specified name and parameters in the given
* class.
*/
/**
* Finds a constructor in the specified class that has matching parameter types.
*
* @param klass The class to find the constructor in
* @param parameterTypes The parameter types of the constructor.
* @param <T> The type
* @return The constructor
* @throws NullPointerException if {@code klass} is null
* @throws NullPointerException if {@code parameterTypes} is null
* @throws UnknownConstructorException if the constructor could not be found
*/
@Nonnull
public static <T> Constructor<T> findConstructor(@Nonnull final Class<T> klass, @Nonnull final Class<?>... parameterTypes)
{
Preconditions.checkNotNull(klass, "class");
Preconditions.checkNotNull(parameterTypes, "parameter types");
/**
* Finds a constructor in the specified class that has matching parameter
* types.
*
* @param klass
* The class to find the constructor in
* @param parameterTypes
* The parameter types of the constructor.
* @param <T>
* The type
* @return The constructor
* @throws NullPointerException
* if {@code klass} is null
* @throws NullPointerException
* if {@code parameterTypes} is null
* @throws UnknownConstructorException
* if the constructor could not be found
*/
@Nonnull
public static <T> Constructor<T> findConstructor(@Nonnull final Class<T> klass, @Nonnull final Class<?>... parameterTypes)
{
Preconditions.checkNotNull(klass, "class");
Preconditions.checkNotNull(parameterTypes, "parameter types");
final Constructor<T> constructor;
try
{
constructor = klass.getDeclaredConstructor(parameterTypes);
constructor.setAccessible(true);
}
catch (final NoSuchMethodException e)
{
final StringBuilder desc = new StringBuilder();
desc.append(klass.getSimpleName()).append('(');
for (int i = 0, length = parameterTypes.length; i < length; i++)
{
desc.append(parameterTypes[i].getName());
if (i > length)
{
desc.append(',').append(' ');
}
}
desc.append(')');
throw new UnknownConstructorException("Could not find constructor '" + desc.toString() + "' in " + klass);
}
return constructor;
}
final Constructor<T> constructor;
try
{
constructor = klass.getDeclaredConstructor(parameterTypes);
constructor.setAccessible(true);
}
catch (final NoSuchMethodException e)
{
final StringBuilder desc = new StringBuilder();
desc.append(klass.getSimpleName()).append('(');
for (int i = 0, length = parameterTypes.length; i < length; i++)
{
desc.append(parameterTypes[i].getName());
if (i > length)
{
desc.append(',').append(' ');
}
}
desc.append(')');
throw new UnknownConstructorException("Could not find constructor '" + desc.toString() + "' in " + klass);
}
return constructor;
}
}

View File

@ -16,38 +16,50 @@ import net.minecraft.world.scores.Objective;
import net.minecraft.world.scores.Score;
import net.minecraft.world.scores.Scoreboard;
public class ScriptParseHelper {
public class ScriptParseHelper
{
public static boolean matches(double number, String cond) {
public static boolean matches(double number, String cond)
{
if (cond == null || cond.isEmpty())
return true;
try {
if (cond.contains("<=")) {
try
{
if (cond.contains("<="))
{
return number <= Double.parseDouble(cond.replace("<=", ""));
}
if (cond.contains(">=")) {
if (cond.contains(">="))
{
return number >= Double.parseDouble(cond.replace(">=", ""));
}
if (cond.contains("<")) {
if (cond.contains("<"))
{
return number < Double.parseDouble(cond.replace("<", ""));
}
if (cond.contains(">")) {
if (cond.contains(">"))
{
return number > Double.parseDouble(cond.replace(">", ""));
}
if (cond.contains("=")) {
if (cond.contains("="))
{
return number == Double.parseDouble(cond.replace("=", ""));
} else
}
else
return number == Double.parseDouble(cond);
} catch (Exception e) {
}
catch (Exception e)
{
new InvalidConfigException(e.getMessage()).printException();
}
return false;
}
public static boolean matches(Block block, String cond) {
public static boolean matches(Block block, String cond)
{
if (cond == null || cond.isEmpty())
return true;
@ -58,12 +70,14 @@ public class ScriptParseHelper {
return false;
}
public static boolean matches(CompoundTag toCheck, CompoundTag toMatch) {
public static boolean matches(CompoundTag toCheck, CompoundTag toMatch)
{
if (toCheck == null || toMatch == null || toMatch.isEmpty())
return true;
boolean matching = true;
for (String key : toMatch.getAllKeys()) {
for (String key : toMatch.getAllKeys())
{
Tag tag = toMatch.get(key);
key = key.replace("\"", "");
Tag tagToCheck = toCheck.get(key);
@ -74,7 +88,8 @@ public class ScriptParseHelper {
return matching;
}
public static float[] getXYZArray(String s) {
public static float[] getXYZArray(String s)
{
float[] d = new float[3];
d[0] = getValueFromString(s, "x");
d[1] = getValueFromString(s, "y");
@ -83,7 +98,8 @@ public class ScriptParseHelper {
return d;
}
public static float[] getScaled(String s) {
public static float[] getScaled(String s)
{
float[] d = new float[3];
d[0] = getScaledValueFromString(s, "x");
d[1] = getScaledValueFromString(s, "y");
@ -92,19 +108,25 @@ public class ScriptParseHelper {
return d;
}
public static float getScaledValueFromString(String toGetFrom, String key) {
public static float getScaledValueFromString(String toGetFrom, String key)
{
if (toGetFrom == null || toGetFrom.isEmpty())
return 1;
String[] s = toGetFrom.split(",");
for (String string : s) {
if (string.contains(key) && string.contains("=")) {
for (String string : s)
{
if (string.contains(key) && string.contains("="))
{
float numb = 1;
string = string.replace(key + "=", "");
try {
try
{
numb = Float.parseFloat(string);
} catch (Exception e) {
}
catch (Exception e)
{
}
return numb;
@ -114,7 +136,8 @@ public class ScriptParseHelper {
return 1;
}
public static boolean matchesScore(Player player, String cond) {
public static boolean matchesScore(Player player, String cond)
{
if (cond == null || cond.isEmpty())
return true;
@ -134,9 +157,11 @@ public class ScriptParseHelper {
scorename = cond.replace(numb, "");
Map<Objective, Score> o = score.getPlayerScores(player.getGameProfile().getName());
if (o != null) {
if (o != null)
{
Score sc = o.get(score.getObjective(scorename));
if (sc != null) {
if (sc != null)
{
int points = sc.getScore();
return matches(points, numb);
@ -146,36 +171,41 @@ public class ScriptParseHelper {
return false;
}
public static boolean matches(BlockPos pos, String cond) {
public static boolean matches(BlockPos pos, String cond)
{
if (cond == null || cond.isEmpty())
return true;
BlockPos blockpos = new BlockPos(getValueFromString(cond, "x"), getValueFromString(cond, "y"),
getValueFromString(cond, "z"));
BlockPos expand = new BlockPos(getValueFromString(cond, "dx"), getValueFromString(cond, "dy"),
getValueFromString(cond, "dz"));
BlockPos blockpos = new BlockPos(getValueFromString(cond, "x"), getValueFromString(cond, "y"), getValueFromString(cond, "z"));
BlockPos expand = new BlockPos(getValueFromString(cond, "dx"), getValueFromString(cond, "dy"), getValueFromString(cond, "dz"));
BlockPos expanded = blockpos.offset(expand);
boolean x = (pos.getX() >= blockpos.getX() && pos.getX() <= expanded.getX()) || blockpos.getX() == 0;
boolean y = (pos.getY() >= blockpos.getY() && pos.getY() <= expanded.getY()) || blockpos.getY() == 0;
boolean z = (pos.getZ() >= blockpos.getZ() && pos.getZ() <= expanded.getZ()) || blockpos.getZ() == 0;
boolean x = pos.getX() >= blockpos.getX() && pos.getX() <= expanded.getX() || blockpos.getX() == 0;
boolean y = pos.getY() >= blockpos.getY() && pos.getY() <= expanded.getY() || blockpos.getY() == 0;
boolean z = pos.getZ() >= blockpos.getZ() && pos.getZ() <= expanded.getZ() || blockpos.getZ() == 0;
return x && y && z;
}
public static float getValueFromString(String toGetFrom, String key) {
public static float getValueFromString(String toGetFrom, String key)
{
if (toGetFrom == null || toGetFrom.isEmpty())
return 0;
String[] s = toGetFrom.split(",");
for (String string : s) {
if (string.contains(key) && string.contains("=")) {
for (String string : s)
{
if (string.contains(key) && string.contains("="))
{
float numb = 0;
string = string.replace(key + "=", "");
try {
try
{
numb = Float.parseFloat(string);
} catch (Exception e) {
}
catch (Exception e)
{
}
return numb;
@ -185,42 +215,51 @@ public class ScriptParseHelper {
return 0;
}
public static boolean hasEffects(Player player, String cond) {
public static boolean hasEffects(Player player, String cond)
{
if (cond == null || cond.isEmpty())
return true;
Collection<MobEffectInstance> effects = player.getActiveEffects();
String[] potions = cond.split(",");
List<String> names = new ArrayList<String>();
List<Integer> levels = new ArrayList<Integer>();
List<String> names = new ArrayList<>();
List<Integer> levels = new ArrayList<>();
for (int i = 0; i < potions.length; i++) {
String pot = potions[i];
if (pot.contains("#")) {
for (String pot : potions)
{
if (pot.contains("#"))
{
String level = pot.substring(pot.indexOf("#"));
String name = pot.substring(0, pot.indexOf("#"));
level = level.replace("#", "");
int lev = 0;
try {
try
{
lev = Integer.parseInt(level);
} catch (Exception e) {
}
catch (Exception e)
{
}
levels.add(lev);
names.add(name);
} else {
}
else
{
levels.add(0);
names.add(pot);
}
}
int matches = 0;
for (MobEffectInstance effect : effects) {
for (MobEffectInstance effect : effects)
{
int amp = effect.getAmplifier();
String name = effect.getEffect().getRegistryName().toString();
if (names.contains(name)) {
if (names.contains(name))
{
int idx = names.indexOf(name);
int lev = levels.get(idx);
@ -232,11 +271,13 @@ public class ScriptParseHelper {
return matches == potions.length;
}
public static boolean matches(Material material, String cond) {
public static boolean matches(Material material, String cond)
{
if (cond == null || cond.isEmpty())
return true;
switch (cond) {
switch (cond)
{
case "air":
return material == Material.AIR;
case "anvil":
@ -306,6 +347,6 @@ public class ScriptParseHelper {
default:
return false;
}
}
}

View File

@ -15,7 +15,7 @@ public class ScrollCallbackWrapper
public void setup(Minecraft mc)
{
oldCallback = GLFW.glfwSetScrollCallback(mc.getWindow().getWindow(), this::scrollCallback);
this.oldCallback = GLFW.glfwSetScrollCallback(mc.getWindow().getWindow(), this::scrollCallback);
}
private void scrollCallback(long window, double xoffset, double yoffset)
@ -26,10 +26,10 @@ public class ScrollCallbackWrapper
if (event.isCanceled())
return;
if (oldCallback != null)
oldCallback.invoke(window, xoffset, yoffset);
if (this.oldCallback != null)
this.oldCallback.invoke(window, xoffset, yoffset);
}
@Cancelable
public static class MouseScrolledEvent extends Event
{

View File

@ -20,19 +20,18 @@ public class StringParser
public static Block getBlock(String string)
{
BlockState state = getBlockState(string);
if(state != null)
if (state != null)
return state.getBlock();
return null;
}
@Nullable
public static BlockState getBlockState(String string)
{
if(string == null)
if (string == null)
return null;
BlockStateParser parser = new BlockStateParser(new StringReader(string), false);
try
@ -50,11 +49,11 @@ public class StringParser
@Nullable
public static Item getItem(String string)
{
if(string == null)
if (string == null)
return null;
ItemParser parser = new ItemParser(new StringReader(string), false);
try
{
parser.parse();
@ -69,32 +68,32 @@ public class StringParser
public static ItemStack getItemStack(String string)
{
if(string == null)
if (string == null)
return null;
ItemParser parser = new ItemParser(new StringReader(string), false);
try
{
parser.parse();
Item item = parser.getItem();
Item item = parser.getItem();
CompoundTag nbt = parser.getNbt();
ItemStack stack = new ItemStack(item, 1);
if(nbt != null)
if (nbt != null)
{
stack.setTag(nbt);
}
return stack;
}
catch (Exception e)
{
new InvalidConfigException("Item parsing Exception at: " + string + " : " + e.getMessage()).printException();
return ItemStack.EMPTY;
}
}
}
@ -102,9 +101,9 @@ public class StringParser
public static CompoundTag getTagCompound(String string)
{
CompoundTag tag = null;
if(string == null)
if (string == null)
return null;
if (string.contains("{"))
{
if (!string.contains("}"))

View File

@ -46,7 +46,7 @@ public class ItemCarryonBlock extends Item
{
public static final String TILE_DATA_KEY = "tileData";
public static final String[] FACING_KEYS = new String[] { "rotation", "rot", "facing", "face", "direction", "dir", "front", "forward" };
public static final String[] FACING_KEYS = { "rotation", "rot", "facing", "face", "direction", "dir", "front", "forward" };
public ItemCarryonBlock()
{
@ -89,11 +89,8 @@ public class ItemCarryonBlock extends Item
BlockPos pos = context.getClickedPos();
ItemStack stack = context.getItemInHand();
if (ModList.get().isLoaded("betterplacement"))
{
if (CarryOnKeybinds.isKeyPressed(player))
return InteractionResult.FAIL;
}
if (ModList.get().isLoaded("betterplacement") && CarryOnKeybinds.isKeyPressed(player))
return InteractionResult.FAIL;
if (hasTileData(stack))
{
@ -113,92 +110,92 @@ public class ItemCarryonBlock extends Item
{
boolean canPlace = containedstate.canSurvive(world, pos2);
if (canPlace)
if (canPlace && player.mayUseItemAt(pos, facing, stack) && world.mayInteract(player, pos2))
{
if (player.mayUseItemAt(pos, facing, stack) && world.mayInteract(player, pos2))
BlockState placementState = containedblock.getStateForPlacement(new BlockPlaceContext(context));
BlockState actualState = placementState == null ? containedstate : placementState;
// Attempted fix for #287
// for (IProperty<?> prop :
// placementState.getValues().keySet())
// {
// if (prop instanceof DirectionProperty)
// actualState = actualState.with((DirectionProperty)
// prop, placementState.get((DirectionProperty) prop));
// else if (prop == BlockStateProperties.WATERLOGGED)
// actualState = actualState.with((BooleanProperty)
// prop, placementState.get((BooleanProperty) prop));
// else if(prop instanceof EnumProperty<?>)
// {
// Object value = placementState.get(prop);
// if(value instanceof Direction.Axis)
// {
// actualState = actualState.with((EnumProperty)prop,
// (Direction.Axis)value);
// }
// }
// }
BlockSnapshot snapshot = BlockSnapshot.create(world.dimension(), world, pos2);
EntityPlaceEvent event = new EntityPlaceEvent(snapshot, world.getBlockState(pos), player);
MinecraftForge.EVENT_BUS.post(event);
if (!event.isCanceled())
{
world.setBlockAndUpdate(pos2, actualState);
BlockState placementState = containedblock.getStateForPlacement(new BlockPlaceContext(context));
BlockState actualState = placementState == null ? containedstate : placementState;
//Attempted fix for #287
// for (IProperty<?> prop : placementState.getValues().keySet())
// {
// if (prop instanceof DirectionProperty)
// actualState = actualState.with((DirectionProperty) prop, placementState.get((DirectionProperty) prop));
// else if (prop == BlockStateProperties.WATERLOGGED)
// actualState = actualState.with((BooleanProperty) prop, placementState.get((BooleanProperty) prop));
// else if(prop instanceof EnumProperty<?>)
// {
// Object value = placementState.get(prop);
// if(value instanceof Direction.Axis)
// {
// actualState = actualState.with((EnumProperty)prop, (Direction.Axis)value);
// }
// }
// }
BlockSnapshot snapshot = BlockSnapshot.create(world.dimension(), world, pos2);
EntityPlaceEvent event = new EntityPlaceEvent(snapshot, world.getBlockState(pos), player);
MinecraftForge.EVENT_BUS.post(event);
if (!event.isCanceled())
// If the blockstate doesn't handle rotation,
// try to
// change rotation via NBT
if (!getTileData(stack).isEmpty())
{
world.setBlockAndUpdate(pos2, actualState);
// If the blockstate doesn't handle rotation,
// try to
// change rotation via NBT
if (!getTileData(stack).isEmpty())
CompoundTag tag = getTileData(stack);
Set<String> keys = tag.getAllKeys();
keytester: for (String key : keys)
{
CompoundTag tag = getTileData(stack);
Set<String> keys = tag.getAllKeys();
keytester: for (String key : keys)
for (String facingKey : FACING_KEYS)
{
for (String facingKey : FACING_KEYS)
if (key.toLowerCase().equals(facingKey))
{
if (key.toLowerCase().equals(facingKey))
byte type = tag.getTagType(key);
switch (type)
{
byte type = tag.getTagType(key);
switch (type)
{
case 8:
tag.putString(key, CharMatcher.javaUpperCase().matchesAllOf(tag.getString(key)) ? facing2.getOpposite().getName().toUpperCase() : facing2.getOpposite().getName());
break;
case 3:
tag.putInt(key, facing2.getOpposite().get3DDataValue());
break;
case 1:
tag.putByte(key, (byte) facing2.getOpposite().get3DDataValue());
break;
default:
break;
}
break keytester;
case 8:
tag.putString(key, CharMatcher.javaUpperCase().matchesAllOf(tag.getString(key)) ? facing2.getOpposite().getName().toUpperCase() : facing2.getOpposite().getName());
break;
case 3:
tag.putInt(key, facing2.getOpposite().get3DDataValue());
break;
case 1:
tag.putByte(key, (byte) facing2.getOpposite().get3DDataValue());
break;
default:
break;
}
break keytester;
}
}
}
BlockEntity tile = world.getBlockEntity(pos2);
if (tile != null)
{
CompoundTag data = getTileData(stack);
updateTileLocation(data, pos2);
tile.load(data);
}
clearTileData(stack);
player.playSound(actualState.getSoundType(world, pos2, player).getPlaceSound(), 1.0f, 0.5f);
player.setItemInHand(InteractionHand.MAIN_HAND, ItemStack.EMPTY);
player.getPersistentData().remove("overrideKey");
ItemEvents.sendPacket(player, 9, 0);
return InteractionResult.SUCCESS;
}
}
BlockEntity tile = world.getBlockEntity(pos2);
if (tile != null)
{
CompoundTag data = getTileData(stack);
updateTileLocation(data, pos2);
tile.load(data);
}
clearTileData(stack);
player.playSound(actualState.getSoundType(world, pos2, player).getPlaceSound(), 1.0f, 0.5f);
player.setItemInHand(InteractionHand.MAIN_HAND, ItemStack.EMPTY);
player.getPersistentData().remove("overrideKey");
ItemEvents.sendPacket(player, 9, 0);
return InteractionResult.SUCCESS;
}
}
}
}
@ -286,7 +283,7 @@ public class ItemCarryonBlock extends Item
stack.setTag(tag);
return true;
}
public static void updateTileLocation(CompoundTag tag, BlockPos pos)
{
tag.putInt("x", pos.getX());

View File

@ -33,19 +33,21 @@ import tschipp.carryon.client.keybinds.CarryOnKeybinds;
import tschipp.carryon.common.config.Configs.Settings;
import tschipp.carryon.common.event.ItemEvents;
public class ItemCarryonEntity extends Item {
public class ItemCarryonEntity extends Item
{
private static final Method initGoals;
static
{
initGoals = ObfuscationReflectionHelper.findMethod(Mob.class, "m_8099_");
initGoals = ObfuscationReflectionHelper.findMethod(Mob.class, "m_8099_");
initGoals.setAccessible(true);
}
public static final String ENTITY_DATA_KEY = "entityData";
public ItemCarryonEntity() {
public ItemCarryonEntity()
{
super(new Item.Properties().stacksTo(1));
this.setRegistryName(CarryOn.MODID, "entity_item");
}
@ -53,27 +55,28 @@ public class ItemCarryonEntity extends Item {
@Override
public Component getName(ItemStack stack)
{
if (hasEntityData(stack)) {
if (hasEntityData(stack))
{
return new TranslatableComponent(getEntityType(stack).getDescriptionId());
}
return new TextComponent("");
}
public static boolean hasEntityData(ItemStack stack) {
if (stack.hasTag()) {
public static boolean hasEntityData(ItemStack stack)
{
if (stack.hasTag())
{
CompoundTag tag = stack.getTag();
return tag.contains(ENTITY_DATA_KEY) && tag.contains("entity");
}
return false;
}
public static boolean storeEntityData(@Nonnull Entity entity, Level world, ItemStack stack) {
if (entity == null)
return false;
if (stack.isEmpty())
public static boolean storeEntityData(@Nonnull Entity entity, Level world, ItemStack stack)
{
if (entity == null || stack.isEmpty())
return false;
CompoundTag entityData = new CompoundTag();
@ -92,7 +95,8 @@ public class ItemCarryonEntity extends Item {
}
@Override
public InteractionResult useOn(UseOnContext context) {
public InteractionResult useOn(UseOnContext context)
{
Player player = context.getPlayer();
Level world = context.getLevel();
BlockPos pos = context.getClickedPos();
@ -102,25 +106,27 @@ public class ItemCarryonEntity extends Item {
BlockState state = world.getBlockState(pos);
if (ModList.get().isLoaded("betterplacement")) {
if (CarryOnKeybinds.isKeyPressed(player))
return InteractionResult.FAIL;
}
if (ModList.get().isLoaded("betterplacement") && CarryOnKeybinds.isKeyPressed(player))
return InteractionResult.FAIL;
if (hasEntityData(stack)) {
if (hasEntityData(stack))
{
BlockPos finalPos = pos;
if (!state.canBeReplaced(new BlockPlaceContext(context))) {
if (!state.canBeReplaced(new BlockPlaceContext(context)))
{
finalPos = pos.relative(facing);
}
Entity entity = getEntity(stack, world);
if (entity != null) {
if (!world.isClientSide) {
entity.absMoveTo(finalPos.getX() + 0.5, finalPos.getY(), finalPos.getZ() + 0.5,
180 + player.yHeadRot, 0.0f);
if (entity != null)
{
if (!world.isClientSide)
{
entity.absMoveTo(finalPos.getX() + 0.5, finalPos.getY(), finalPos.getZ() + 0.5, 180 + player.yHeadRot, 0.0f);
world.addFreshEntity(entity);
if (entity instanceof Mob) {
if (entity instanceof Mob)
{
((Mob) entity).playAmbientSound();
}
clearEntityData(stack);
@ -137,42 +143,50 @@ public class ItemCarryonEntity extends Item {
}
@Override
public void inventoryTick(ItemStack stack, Level world, Entity entity, int itemSlot, boolean isSelected) {
if (hasEntityData(stack)) {
public void inventoryTick(ItemStack stack, Level world, Entity entity, int itemSlot, boolean isSelected)
{
if (hasEntityData(stack))
{
if (getEntity(stack, world) == null)
stack = ItemStack.EMPTY;
if (entity instanceof LivingEntity) {
if (entity instanceof Player && Settings.slownessInCreative.get() ? false
: ((Player) entity).isCreative())
if (entity instanceof LivingEntity)
{
if (entity instanceof Player && Settings.slownessInCreative.get() ? false : ((Player) entity).isCreative())
return;
((LivingEntity) entity).addEffect(
new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 1, potionLevel(stack, world), false, false));
((LivingEntity) entity).addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 1, this.potionLevel(stack, world), false, false));
}
} else {
}
else
{
stack = ItemStack.EMPTY;
}
}
public static void clearEntityData(ItemStack stack) {
if (stack.hasTag()) {
public static void clearEntityData(ItemStack stack)
{
if (stack.hasTag())
{
CompoundTag tag = stack.getTag();
tag.remove(ENTITY_DATA_KEY);
tag.remove("entity");
}
}
public static CompoundTag getPersistentData(ItemStack stack) {
if (stack.hasTag()) {
public static CompoundTag getPersistentData(ItemStack stack)
{
if (stack.hasTag())
{
CompoundTag tag = stack.getTag();
return tag.getCompound(ENTITY_DATA_KEY);
}
return null;
}
public static Entity getEntity(ItemStack stack, Level world) {
public static Entity getEntity(ItemStack stack, Level world)
{
if (world == null)
return null;
@ -182,7 +196,8 @@ public class ItemCarryonEntity extends Item {
Optional<EntityType<?>> type = EntityType.byString(name);
Entity entity = null;
if (type.isPresent()) {
if (type.isPresent())
{
entity = type.get().create(world);
}
@ -201,28 +216,37 @@ public class ItemCarryonEntity extends Item {
return entity;
}
public static String getEntityName(ItemStack stack) {
if (stack.hasTag()) {
public static String getEntityName(ItemStack stack)
{
if (stack.hasTag())
{
CompoundTag tag = stack.getTag();
return tag.getString("entity");
}
return null;
}
public static String getCustomName(ItemStack stack) {
if (stack.hasTag()) {
public static String getCustomName(ItemStack stack)
{
if (stack.hasTag())
{
CompoundTag tag = stack.getTag();
if (tag.contains("CustomName") && !tag.getString("CustomName").isEmpty()) {
if (tag.contains("CustomName") && !tag.getString("CustomName").isEmpty())
{
return tag.toString();
} else {
}
else
{
return tag.toString();
}
}
return null;
}
public static EntityType<?> getEntityType(ItemStack stack) {
if (stack.hasTag()) {
public static EntityType<?> getEntityType(ItemStack stack)
{
if (stack.hasTag())
{
CompoundTag tag = stack.getTag();
String name = tag.getString("entity");
Optional<EntityType<?>> type = EntityType.byString(name);
@ -232,7 +256,8 @@ public class ItemCarryonEntity extends Item {
return null;
}
private int potionLevel(ItemStack stack, Level world) {
private int potionLevel(ItemStack stack, Level world)
{
Entity e = getEntity(stack, world);
if (e == null)
return 1;

View File

@ -1,5 +1,7 @@
package tschipp.carryon.common.scripting;
import java.util.Objects;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@ -64,7 +66,7 @@ public class CarryOnOverride
public CarryOnOverride(JsonElement jsonElem, ResourceLocation loc)
{
boolean errored = false;
resourceLocation = loc.toString();
this.resourceLocation = loc.toString();
if (jsonElem != null && jsonElem.isJsonObject())
{
@ -76,19 +78,19 @@ public class CarryOnOverride
JsonObject render = (JsonObject) json.get("render");
JsonObject effects = (JsonObject) json.get("effects");
if ((object != null && conditions != null) || (object != null && render != null) || (object != null && effects != null))
if (object != null && (conditions != null || render != null || effects != null))
{
JsonObject block = (JsonObject) object.get("block");
JsonObject entity = (JsonObject) object.get("entity");
if ((block == null && entity == null) || (block != null && entity != null))
if (block == null && entity == null || block != null && entity != null)
errored = true;
if (!errored)
{
if (block != null)
{
setBlock(true);
this.setBlock(true);
JsonElement name = block.get("name");
JsonElement material = block.get("material");
JsonElement hardness = block.get("hardness");
@ -96,19 +98,19 @@ public class CarryOnOverride
JsonObject nbt = (JsonObject) block.get("nbt");
if (name != null)
setTypeNameBlock(name.getAsString());
this.setTypeNameBlock(name.getAsString());
if (material != null)
setTypeMaterial(material.getAsString());
this.setTypeMaterial(material.getAsString());
if (hardness != null)
setTypeHardness(hardness.getAsString());
this.setTypeHardness(hardness.getAsString());
if (resistance != null)
setTypeResistance(resistance.getAsString());
this.setTypeResistance(resistance.getAsString());
if (nbt != null)
setTypeBlockTag(TagParser.parseTag(nbt.toString()));
this.setTypeBlockTag(TagParser.parseTag(nbt.toString()));
}
else
{
setEntity(true);
this.setEntity(true);
JsonElement name = entity.get("name");
JsonElement health = entity.get("health");
JsonElement height = entity.get("height");
@ -116,15 +118,15 @@ public class CarryOnOverride
JsonObject nbt = (JsonObject) entity.get("nbt");
if (name != null)
setTypeNameEntity(name.getAsString());
this.setTypeNameEntity(name.getAsString());
if (health != null)
setTypeHealth(health.getAsString());
this.setTypeHealth(health.getAsString());
if (height != null)
setTypeHeight(height.getAsString());
this.setTypeHeight(height.getAsString());
if (width != null)
setTypeWidth(width.getAsString());
this.setTypeWidth(width.getAsString());
if (nbt != null)
setTypeEntityTag(TagParser.parseTag(nbt.toString()));
this.setTypeEntityTag(TagParser.parseTag(nbt.toString()));
}
if (conditions != null)
@ -138,19 +140,19 @@ public class CarryOnOverride
JsonElement potionEffects = conditions.get("effects");
if (gamestage != null)
setConditionGamestage(gamestage.getAsString());
this.setConditionGamestage(gamestage.getAsString());
if (achievement != null)
setConditionAchievement(achievement.getAsString());
this.setConditionAchievement(achievement.getAsString());
if (xp != null)
setConditionXp(xp.getAsString());
this.setConditionXp(xp.getAsString());
if (gamemode != null)
setConditionGamemode(gamemode.getAsString());
this.setConditionGamemode(gamemode.getAsString());
if (scoreboard != null)
setConditionScoreboard(scoreboard.getAsString());
this.setConditionScoreboard(scoreboard.getAsString());
if (position != null)
setConditionPosition(position.getAsString());
this.setConditionPosition(position.getAsString());
if (potionEffects != null)
setConditionEffects(potionEffects.getAsString());
this.setConditionEffects(potionEffects.getAsString());
}
if (render != null)
@ -167,25 +169,25 @@ public class CarryOnOverride
JsonElement renderRightArm = render.get("render_right_arm");
if (name_block != null)
setRenderNameBlock(name_block.getAsString());
this.setRenderNameBlock(name_block.getAsString());
if (name_entity != null)
setRenderNameEntity(name_entity.getAsString());
this.setRenderNameEntity(name_entity.getAsString());
if (translation != null)
setRenderTranslation(translation.getAsString());
this.setRenderTranslation(translation.getAsString());
if (rotation != null)
setRenderRotation(rotation.getAsString());
this.setRenderRotation(rotation.getAsString());
if (scaled != null)
setRenderscaled(scaled.getAsString());
this.setRenderscaled(scaled.getAsString());
if (nbt != null)
setRenderNBT(TagParser.parseTag(nbt.toString()));
this.setRenderNBT(TagParser.parseTag(nbt.toString()));
if (rotationLeftArm != null)
setRenderRotationLeftArm(rotationLeftArm.getAsString());
this.setRenderRotationLeftArm(rotationLeftArm.getAsString());
if (rotationRightArm != null)
setRenderRotationRightArm(rotationRightArm.getAsString());
this.setRenderRotationRightArm(rotationRightArm.getAsString());
if (renderLeftArm != null)
setRenderLeftArm(renderLeftArm.getAsBoolean());
this.setRenderLeftArm(renderLeftArm.getAsBoolean());
if (renderRightArm != null)
setRenderRightArm(renderRightArm.getAsBoolean());
this.setRenderRightArm(renderRightArm.getAsBoolean());
}
if (effects != null)
@ -195,35 +197,35 @@ public class CarryOnOverride
JsonElement commandPlace = effects.get("commandPlace");
if (commandInit != null)
setCommandInit(commandInit.getAsString());
this.setCommandInit(commandInit.getAsString());
if (commandLoop != null)
setCommandLoop(commandLoop.getAsString());
this.setCommandLoop(commandLoop.getAsString());
if (commandPlace != null)
setCommandPlace(commandPlace.getAsString());
this.setCommandPlace(commandPlace.getAsString());
}
}
else
isInvalid = true;
this.isInvalid = true;
}
}
catch (Exception e)
{
isInvalid = true;
this.isInvalid = true;
}
}
else
isInvalid = true;
if(!isBlock && !isEntity)
isInvalid = true;
if(isInvalid)
new InvalidConfigException("The script parsing for " + resourceLocation + " has failed! Please double check!").printException();
this.isInvalid = true;
if (!this.isBlock && !this.isEntity)
this.isInvalid = true;
if (this.isInvalid)
new InvalidConfigException("The script parsing for " + this.resourceLocation + " has failed! Please double check!").printException();
}
public String getCommandInit()
{
return commandInit;
return this.commandInit;
}
public void setCommandInit(String commandInit)
@ -233,7 +235,7 @@ public class CarryOnOverride
public String getCommandLoop()
{
return commandLoop;
return this.commandLoop;
}
public void setCommandLoop(String commandLoop)
@ -243,7 +245,7 @@ public class CarryOnOverride
public String getConditionEffects()
{
return conditionEffects;
return this.conditionEffects;
}
public void setConditionEffects(String conditionEffects)
@ -253,7 +255,7 @@ public class CarryOnOverride
public String getRenderRotationLeftArm()
{
return renderRotationLeftArm;
return this.renderRotationLeftArm;
}
public void setRenderRotationLeftArm(String renderRotationLeftArm)
@ -263,7 +265,7 @@ public class CarryOnOverride
public String getRenderRotationRightArm()
{
return renderRotationRightArm;
return this.renderRotationRightArm;
}
public void setRenderRotationRightArm(String renderRotationRightArm)
@ -273,7 +275,7 @@ public class CarryOnOverride
public boolean isRenderLeftArm()
{
return renderLeftArm;
return this.renderLeftArm;
}
public void setRenderLeftArm(boolean renderLeftArm)
@ -283,7 +285,7 @@ public class CarryOnOverride
public boolean isRenderRightArm()
{
return renderRightArm;
return this.renderRightArm;
}
public void setRenderRightArm(boolean renderRightArm)
@ -296,8 +298,7 @@ public class CarryOnOverride
{
final int prime = 31;
int result = 1;
result = prime * result + ((resourceLocation == null) ? 0 : resourceLocation.hashCode());
return result;
return prime * result + (this.resourceLocation == null ? 0 : this.resourceLocation.hashCode());
}
@Override
@ -311,228 +312,115 @@ public class CarryOnOverride
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
if (obj == null || this.getClass() != obj.getClass())
return false;
CarryOnOverride other = (CarryOnOverride) obj;
if (commandInit == null)
if (!Objects.equals(this.commandInit, other.commandInit) || !Objects.equals(this.commandLoop, other.commandLoop) || !Objects.equals(this.commandPlace, other.commandPlace) || !Objects.equals(this.conditionAchievement, other.conditionAchievement))
{
if (other.commandInit != null)
return false;
}
else if (!commandInit.equals(other.commandInit))
return false;
if (commandLoop == null)
}
if (!Objects.equals(this.conditionEffects, other.conditionEffects) || !Objects.equals(this.conditionGamemode, other.conditionGamemode) || !Objects.equals(this.conditionGamestage, other.conditionGamestage) || !Objects.equals(this.conditionPosition, other.conditionPosition))
{
if (other.commandLoop != null)
return false;
}
else if (!commandLoop.equals(other.commandLoop))
return false;
if (commandPlace == null)
}
if (!Objects.equals(this.conditionScoreboard, other.conditionScoreboard))
{
if (other.commandPlace != null)
return false;
}
else if (!commandPlace.equals(other.commandPlace))
return false;
if (conditionAchievement == null)
}
if (!Objects.equals(this.conditionXp, other.conditionXp))
{
if (other.conditionAchievement != null)
return false;
}
else if (!conditionAchievement.equals(other.conditionAchievement))
return false;
if (conditionEffects == null)
}
if (this.isBlock != other.isBlock)
return false;
if (this.isEntity != other.isEntity)
return false;
if (!Objects.equals(this.resourceLocation, other.resourceLocation))
{
if (other.conditionEffects != null)
return false;
}
else if (!conditionEffects.equals(other.conditionEffects))
return false;
if (conditionGamemode == null)
}
if (this.renderLeftArm != other.renderLeftArm)
return false;
if (!Objects.equals(this.renderNBT, other.renderNBT))
{
if (other.conditionGamemode != null)
return false;
}
else if (!conditionGamemode.equals(other.conditionGamemode))
return false;
if (conditionGamestage == null)
}
if (!Objects.equals(this.renderNameBlock, other.renderNameBlock))
{
if (other.conditionGamestage != null)
return false;
}
else if (!conditionGamestage.equals(other.conditionGamestage))
return false;
if (conditionPosition == null)
}
if (!Objects.equals(this.renderNameEntity, other.renderNameEntity))
{
if (other.conditionPosition != null)
return false;
}
else if (!conditionPosition.equals(other.conditionPosition))
return false;
if (conditionScoreboard == null)
}
if (this.renderRightArm != other.renderRightArm)
return false;
if (!Objects.equals(this.renderRotation, other.renderRotation))
{
if (other.conditionScoreboard != null)
return false;
}
else if (!conditionScoreboard.equals(other.conditionScoreboard))
return false;
if (conditionXp == null)
}
if (!Objects.equals(this.renderRotationLeftArm, other.renderRotationLeftArm))
{
if (other.conditionXp != null)
return false;
return false;
}
else if (!conditionXp.equals(other.conditionXp))
return false;
if (isBlock != other.isBlock)
return false;
if (isEntity != other.isEntity)
return false;
if (resourceLocation == null)
if (!Objects.equals(this.renderRotationRightArm, other.renderRotationRightArm))
{
if (other.resourceLocation != null)
return false;
return false;
}
else if (!resourceLocation.equals(other.resourceLocation))
return false;
if (renderLeftArm != other.renderLeftArm)
return false;
if (renderNBT == null)
if (!Objects.equals(this.renderscaled, other.renderscaled))
{
if (other.renderNBT != null)
return false;
}
else if (!renderNBT.equals(other.renderNBT))
return false;
if (renderNameBlock == null)
}
if (!Objects.equals(this.renderTranslation, other.renderTranslation))
{
if (other.renderNameBlock != null)
return false;
}
else if (!renderNameBlock.equals(other.renderNameBlock))
return false;
if (renderNameEntity == null)
}
if (!Objects.equals(this.typeBlockTag, other.typeBlockTag))
{
if (other.renderNameEntity != null)
return false;
return false;
}
else if (!renderNameEntity.equals(other.renderNameEntity))
return false;
if (renderRightArm != other.renderRightArm)
return false;
if (renderRotation == null)
if (!Objects.equals(this.typeEntityTag, other.typeEntityTag))
{
if (other.renderRotation != null)
return false;
}
else if (!renderRotation.equals(other.renderRotation))
return false;
if (renderRotationLeftArm == null)
}
if (!Objects.equals(this.typeHardness, other.typeHardness))
{
if (other.renderRotationLeftArm != null)
return false;
}
else if (!renderRotationLeftArm.equals(other.renderRotationLeftArm))
return false;
if (renderRotationRightArm == null)
}
if (!Objects.equals(this.typeHealth, other.typeHealth))
{
if (other.renderRotationRightArm != null)
return false;
}
else if (!renderRotationRightArm.equals(other.renderRotationRightArm))
return false;
if (renderscaled == null)
}
if (!Objects.equals(this.typeHeight, other.typeHeight))
{
if (other.renderscaled != null)
return false;
}
else if (!renderscaled.equals(other.renderscaled))
return false;
if (renderTranslation == null)
}
if (!Objects.equals(this.typeMaterial, other.typeMaterial))
{
if (other.renderTranslation != null)
return false;
}
else if (!renderTranslation.equals(other.renderTranslation))
return false;
if (typeBlockTag == null)
}
if (!Objects.equals(this.typeNameBlock, other.typeNameBlock))
{
if (other.typeBlockTag != null)
return false;
}
else if (!typeBlockTag.equals(other.typeBlockTag))
return false;
if (typeEntityTag == null)
}
if (!Objects.equals(this.typeNameEntity, other.typeNameEntity))
{
if (other.typeEntityTag != null)
return false;
}
else if (!typeEntityTag.equals(other.typeEntityTag))
return false;
if (typeHardness == null)
}
if (!Objects.equals(this.typeResistance, other.typeResistance))
{
if (other.typeHardness != null)
return false;
}
else if (!typeHardness.equals(other.typeHardness))
return false;
if (typeHealth == null)
}
if (!Objects.equals(this.typeWidth, other.typeWidth))
{
if (other.typeHealth != null)
return false;
}
else if (!typeHealth.equals(other.typeHealth))
return false;
if (typeHeight == null)
{
if (other.typeHeight != null)
return false;
}
else if (!typeHeight.equals(other.typeHeight))
return false;
if (typeMaterial == null)
{
if (other.typeMaterial != null)
return false;
}
else if (!typeMaterial.equals(other.typeMaterial))
return false;
if (typeNameBlock == null)
{
if (other.typeNameBlock != null)
return false;
}
else if (!typeNameBlock.equals(other.typeNameBlock))
return false;
if (typeNameEntity == null)
{
if (other.typeNameEntity != null)
return false;
}
else if (!typeNameEntity.equals(other.typeNameEntity))
return false;
if (typeResistance == null)
{
if (other.typeResistance != null)
return false;
}
else if (!typeResistance.equals(other.typeResistance))
return false;
if (typeWidth == null)
{
if (other.typeWidth != null)
return false;
}
else if (!typeWidth.equals(other.typeWidth))
return false;
return true;
}
public boolean isBlock()
{
return isBlock;
return this.isBlock;
}
public void setBlock(boolean isBlock)
@ -542,7 +430,7 @@ public class CarryOnOverride
public boolean isEntity()
{
return isEntity;
return this.isEntity;
}
public void setEntity(boolean isEntity)
@ -552,112 +440,112 @@ public class CarryOnOverride
public CompoundTag getTypeBlockTag()
{
return typeBlockTag;
return this.typeBlockTag;
}
public String getTypeNameBlock()
{
return typeNameBlock;
return this.typeNameBlock;
}
public String getTypeMaterial()
{
return typeMaterial;
return this.typeMaterial;
}
public String getTypeHardness()
{
return typeHardness;
return this.typeHardness;
}
public String getTypeResistance()
{
return typeResistance;
return this.typeResistance;
}
public CompoundTag getTypeEntityTag()
{
return typeEntityTag;
return this.typeEntityTag;
}
public String getTypeNameEntity()
{
return typeNameEntity;
return this.typeNameEntity;
}
public String getTypeHeight()
{
return typeHeight;
return this.typeHeight;
}
public String getTypeWidth()
{
return typeWidth;
return this.typeWidth;
}
public String getTypeHealth()
{
return typeHealth;
return this.typeHealth;
}
public String getConditionGamestage()
{
return conditionGamestage;
return this.conditionGamestage;
}
public String getConditionAchievement()
{
return conditionAchievement;
return this.conditionAchievement;
}
public String getConditionXp()
{
return conditionXp;
return this.conditionXp;
}
public String getConditionGamemode()
{
return conditionGamemode;
return this.conditionGamemode;
}
public String getConditionScoreboard()
{
return conditionScoreboard;
return this.conditionScoreboard;
}
public String getConditionPosition()
{
return conditionPosition;
return this.conditionPosition;
}
public String getRenderNameBlock()
{
return renderNameBlock;
return this.renderNameBlock;
}
public String getRenderNameEntity()
{
return renderNameEntity;
return this.renderNameEntity;
}
public CompoundTag getRenderNBT()
{
return renderNBT;
return this.renderNBT;
}
public String getRenderTranslation()
{
return renderTranslation;
return this.renderTranslation;
}
public String getRenderRotation()
{
return renderRotation;
return this.renderRotation;
}
public String getRenderScaled()
{
return renderscaled;
return this.renderscaled;
}
public void setTypeBlockTag(CompoundTag typeBlockTag)
@ -772,7 +660,7 @@ public class CarryOnOverride
public String getCommandPlace()
{
return commandPlace;
return this.commandPlace;
}
public void setCommandPlace(String commandPlace)
@ -783,48 +671,48 @@ public class CarryOnOverride
public void serialize(FriendlyByteBuf buf)
{
// BLOCKS
buf.writeNbt(typeBlockTag);
buf.writeUtf(typeNameBlock);
buf.writeUtf(typeMaterial);
buf.writeUtf(typeHardness);
buf.writeUtf(typeResistance);
buf.writeNbt(this.typeBlockTag);
buf.writeUtf(this.typeNameBlock);
buf.writeUtf(this.typeMaterial);
buf.writeUtf(this.typeHardness);
buf.writeUtf(this.typeResistance);
// ENTITIES
buf.writeNbt(typeEntityTag);
buf.writeUtf(typeNameEntity);
buf.writeUtf(typeHeight);
buf.writeUtf(typeWidth);
buf.writeUtf(typeHealth);
buf.writeNbt(this.typeEntityTag);
buf.writeUtf(this.typeNameEntity);
buf.writeUtf(this.typeHeight);
buf.writeUtf(this.typeWidth);
buf.writeUtf(this.typeHealth);
// CONDITIONS
buf.writeUtf(conditionGamestage);
buf.writeUtf(conditionAchievement);
buf.writeUtf(conditionXp);
buf.writeUtf(conditionGamemode);
buf.writeUtf(conditionScoreboard);
buf.writeUtf(conditionPosition);
buf.writeUtf(conditionEffects);
buf.writeUtf(this.conditionGamestage);
buf.writeUtf(this.conditionAchievement);
buf.writeUtf(this.conditionXp);
buf.writeUtf(this.conditionGamemode);
buf.writeUtf(this.conditionScoreboard);
buf.writeUtf(this.conditionPosition);
buf.writeUtf(this.conditionEffects);
// RENDER
buf.writeUtf(renderNameBlock);
buf.writeUtf(renderNameEntity);
buf.writeNbt(renderNBT);
buf.writeUtf(renderTranslation);
buf.writeUtf(renderRotation);
buf.writeUtf(renderscaled);
buf.writeUtf(renderRotationLeftArm);
buf.writeUtf(renderRotationRightArm);
buf.writeBoolean(renderLeftArm);
buf.writeBoolean(renderRightArm);
buf.writeUtf(this.renderNameBlock);
buf.writeUtf(this.renderNameEntity);
buf.writeNbt(this.renderNBT);
buf.writeUtf(this.renderTranslation);
buf.writeUtf(this.renderRotation);
buf.writeUtf(this.renderscaled);
buf.writeUtf(this.renderRotationLeftArm);
buf.writeUtf(this.renderRotationRightArm);
buf.writeBoolean(this.renderLeftArm);
buf.writeBoolean(this.renderRightArm);
// EFFECTS
buf.writeUtf(commandInit);
buf.writeUtf(commandLoop);
buf.writeUtf(commandPlace);
buf.writeUtf(this.commandInit);
buf.writeUtf(this.commandLoop);
buf.writeUtf(this.commandPlace);
buf.writeBoolean(isBlock);
buf.writeBoolean(isEntity);
buf.writeUtf(resourceLocation);
buf.writeBoolean(this.isBlock);
buf.writeBoolean(this.isEntity);
buf.writeUtf(this.resourceLocation);
}
public static CarryOnOverride deserialize(FriendlyByteBuf buf)

View File

@ -44,11 +44,8 @@ public class ScriptChecker
{
for (CarryOnOverride override : ScriptReader.OVERRIDES.values())
{
if (override.isBlock())
{
if (matchesAll(override, block, material, hardness, resistance, nbt))
return override;
}
if (override.isBlock() && matchesAll(override, block, material, hardness, resistance, nbt))
return override;
}
}
@ -66,7 +63,6 @@ public class ScriptChecker
float width = entity.getBbWidth();
float health = entity instanceof LivingEntity ? ((LivingEntity) entity).getHealth() : 0.0f;
CompoundTag tag = entity.serializeNBT();
boolean isAllowed = Settings.useWhitelistEntities.get() ? ListHandler.isAllowed(entity) : !ListHandler.isForbidden(entity);
@ -74,11 +70,8 @@ public class ScriptChecker
{
for (CarryOnOverride override : ScriptReader.OVERRIDES.values())
{
if (override.isEntity())
{
if (matchesAll(override, name, height, width, health, tag))
return override;
}
if (override.isEntity() && matchesAll(override, name, height, width, health, tag))
return override;
}
}
@ -93,7 +86,7 @@ public class ScriptChecker
boolean matchhealth = ScriptParseHelper.matches(health, override.getTypeHealth());
boolean matchnbt = ScriptParseHelper.matches(tag, override.getTypeEntityTag());
return (matchname && matchheight && matchwidth && matchhealth && matchnbt);
return matchname && matchheight && matchwidth && matchhealth && matchnbt;
}
public static boolean matchesAll(CarryOnOverride override, Block block, Material material, float hardness, float resistance, CompoundTag nbt)
@ -104,54 +97,51 @@ public class ScriptChecker
boolean matchhardness = ScriptParseHelper.matches(hardness, override.getTypeHardness());
boolean matchresistance = ScriptParseHelper.matches(resistance, override.getTypeResistance());
return (matchnbt && matchblock && matchmaterial && matchhardness && matchresistance);
return matchnbt && matchblock && matchmaterial && matchhardness && matchresistance;
}
public static boolean fulfillsConditions(CarryOnOverride override, Player player)
{
ServerAdvancementManager manager = ((ServerPlayer) player).server.getAdvancements();
Advancement adv = manager.getAdvancement(new ResourceLocation((override.getConditionAchievement()).isEmpty() ? "" : override.getConditionAchievement()));
Advancement adv = manager.getAdvancement(new ResourceLocation(override.getConditionAchievement().isEmpty() ? "" : override.getConditionAchievement()));
boolean achievement = adv == null ? true : ((ServerPlayer) player).getAdvancements().getOrStartProgress(adv).isDone();
boolean gamemode = ScriptParseHelper.matches(((ServerPlayer) player).gameMode.getGameModeForPlayer().getId(), override.getConditionGamemode());
boolean gamestage = true;
if (ModList.get().isLoaded("gamestages"))
if (ModList.get().isLoaded("gamestages") && !override.getConditionGamestage().isEmpty())
{
if (!override.getConditionGamestage().isEmpty())
try
{
Class<?> gameStageHelper = Class.forName("net.darkhax.gamestages.GameStageHelper");
Class<?> iStageData = Class.forName("net.darkhax.gamestages.data.IStageData");
Method getPlayerData = ObfuscationReflectionHelper.findMethod(gameStageHelper, "getPlayerData", Player.class);
Method hasStage = ObfuscationReflectionHelper.findMethod(iStageData, "hasStage", String.class);
Object stageData = getPlayerData.invoke(null, player);
String condition = override.getConditionGamestage();
gamestage = (boolean) hasStage.invoke(stageData, condition);
}
catch (Exception e)
{
try
{
Class<?> gameStageHelper = Class.forName("net.darkhax.gamestages.GameStageHelper");
Class<?> iStageData = Class.forName("net.darkhax.gamestages.data.IStageData");
Class<?> playerDataHandler = Class.forName("net.darkhax.gamestages.capabilities.PlayerDataHandler");
Class<?> iStageData = Class.forName("net.darkhax.gamestages.capabilities.PlayerDataHandler$IStageData");
Method getPlayerData = ObfuscationReflectionHelper.findMethod(gameStageHelper, "getPlayerData", Player.class);
Method hasStage = ObfuscationReflectionHelper.findMethod(iStageData, "hasStage", String.class);
Method getStageData = ObfuscationReflectionHelper.findMethod(playerDataHandler, "getStageData", Player.class);
Method hasUnlockedStage = ObfuscationReflectionHelper.findMethod(iStageData, "hasUnlockedStage", String.class);
Object stageData = getPlayerData.invoke(null, player);
Object stageData = getStageData.invoke(null, player);
String condition = override.getConditionGamestage();
gamestage = (boolean) hasStage.invoke(stageData, condition);
gamestage = (boolean) hasUnlockedStage.invoke(stageData, condition);
}
catch (Exception e)
catch (Exception ex)
{
try
{
Class<?> playerDataHandler = Class.forName("net.darkhax.gamestages.capabilities.PlayerDataHandler");
Class<?> iStageData = Class.forName("net.darkhax.gamestages.capabilities.PlayerDataHandler$IStageData");
Method getStageData = ObfuscationReflectionHelper.findMethod(playerDataHandler, "getStageData", Player.class);
Method hasUnlockedStage = ObfuscationReflectionHelper.findMethod(iStageData, "hasUnlockedStage", String.class);
Object stageData = getStageData.invoke(null, player);
String condition = override.getConditionGamestage();
gamestage = (boolean) hasUnlockedStage.invoke(stageData, condition);
}
catch (Exception ex)
{
}
}
}
}
boolean position = ScriptParseHelper.matches(player.blockPosition(), override.getConditionPosition());
@ -159,7 +149,7 @@ public class ScriptChecker
boolean scoreboard = ScriptParseHelper.matchesScore(player, override.getConditionScoreboard());
boolean effects = ScriptParseHelper.hasEffects(player, override.getConditionEffects());
return (achievement && gamemode && gamestage && position && xp && scoreboard && effects);
return achievement && gamemode && gamestage && position && xp && scoreboard && effects;
}
@Nullable

View File

@ -4,184 +4,188 @@ import java.util.HashMap;
public class ScriptReader
{
public static HashMap<Integer, CarryOnOverride> OVERRIDES = new HashMap<Integer, CarryOnOverride>();
public static HashMap<Integer, CarryOnOverride> OVERRIDES = new HashMap<>();
// public static HashSet<CarryOnOverride> OVERRIDES = new
// HashSet<CarryOnOverride>();
// public static void preInit()
// {
// scripts.clear();
//
// CarryOn.CONFIGURATION_FILE = new File(FMLPaths.CONFIGDIR.get().toString(), "/carryon-scripts/");
//
// if (!CarryOn.CONFIGURATION_FILE.exists())
// CarryOn.CONFIGURATION_FILE.mkdir();
//
// for (File file : CarryOn.CONFIGURATION_FILE.listFiles())
// {
// if (file.getName().endsWith(".json"))
// scripts.add(file);
// }
//
// }
// public static void preInit()
// {
// scripts.clear();
//
// CarryOn.CONFIGURATION_FILE = new
// File(FMLPaths.CONFIGDIR.get().toString(), "/carryon-scripts/");
//
// if (!CarryOn.CONFIGURATION_FILE.exists())
// CarryOn.CONFIGURATION_FILE.mkdir();
//
// for (File file : CarryOn.CONFIGURATION_FILE.listFiles())
// {
// if (file.getName().endsWith(".json"))
// scripts.add(file);
// }
//
// }
// public static void parseScripts()
// {
// OVERRIDES.clear();
//
// try
// {
// if (!Settings.useScripts.get())
// return;
//
// for (File file : scripts)
// {
// boolean errored = false;
// JsonParser parser = new JsonParser();
// JsonObject json = (JsonObject) parser.parse(new FileReader(file.getAbsolutePath()));
//
// JsonObject object = (JsonObject) json.get("object");
// JsonObject conditions = (JsonObject) json.get("conditions");
// JsonObject render = (JsonObject) json.get("render");
// JsonObject effects = (JsonObject) json.get("effects");
//
// if ((object != null && conditions != null) || (object != null && render != null) || (object != null && effects != null))
// {
// JsonObject block = (JsonObject) object.get("block");
// JsonObject entity = (JsonObject) object.get("entity");
//
// if ((block == null && entity == null) || (block != null && entity != null))
// errored = true;
//
// if (!errored)
// {
// CarryOnOverride override = new CarryOnOverride(file.getAbsolutePath());
//
// if (block != null)
// {
// override.setBlock(true);
// JsonElement name = block.get("name");
// JsonElement material = block.get("material");
// JsonElement hardness = block.get("hardness");
// JsonElement resistance = block.get("resistance");
// JsonObject nbt = (JsonObject) block.get("nbt");
//
// if (name != null)
// override.setTypeNameBlock(name.getAsString());
// if (material != null)
// override.setTypeMaterial(material.getAsString());
// if (hardness != null)
// override.setTypeHardness(hardness.getAsString());
// if (resistance != null)
// override.setTypeResistance(resistance.getAsString());
// if (nbt != null)
// override.setTypeBlockTag(JsonToNBT.getTagFromJson(nbt.toString()));
// } else
// {
// override.setEntity(true);
// JsonElement name = entity.get("name");
// JsonElement health = entity.get("health");
// JsonElement height = entity.get("height");
// JsonElement width = entity.get("width");
// JsonObject nbt = (JsonObject) entity.get("nbt");
//
// if (name != null)
// override.setTypeNameEntity(name.getAsString());
// if (health != null)
// override.setTypeHealth(health.getAsString());
// if (height != null)
// override.setTypeHeight(height.getAsString());
// if (width != null)
// override.setTypeWidth(width.getAsString());
// if (nbt != null)
// override.setTypeEntityTag(JsonToNBT.getTagFromJson(nbt.toString()));
// }
//
// if (conditions != null)
// {
// JsonElement gamestage = conditions.get("gamestage");
// JsonElement achievement = conditions.get("advancement");
// JsonElement xp = conditions.get("xp");
// JsonElement gamemode = conditions.get("gamemode");
// JsonElement scoreboard = conditions.get("scoreboard");
// JsonElement position = conditions.get("position");
// JsonElement potionEffects = conditions.get("effects");
//
// if (gamestage != null)
// override.setConditionGamestage(gamestage.getAsString());
// if (achievement != null)
// override.setConditionAchievement(achievement.getAsString());
// if (xp != null)
// override.setConditionXp(xp.getAsString());
// if (gamemode != null)
// override.setConditionGamemode(gamemode.getAsString());
// if (scoreboard != null)
// override.setConditionScoreboard(scoreboard.getAsString());
// if (position != null)
// override.setConditionPosition(position.getAsString());
// if (potionEffects != null)
// override.setConditionEffects(potionEffects.getAsString());
// }
//
// if (render != null)
// {
// JsonElement name_block = render.get("name_block");
// JsonElement name_entity = render.get("name_entity");
// JsonObject nbt = (JsonObject) render.get("nbt");
// JsonElement translation = render.get("translation");
// JsonElement rotation = render.get("rotation");
// JsonElement scaled = render.get("scale");
// JsonElement rotationLeftArm = render.get("rotation_left_arm");
// JsonElement rotationRightArm = render.get("rotation_right_arm");
// JsonElement renderLeftArm = render.get("render_left_arm");
// JsonElement renderRightArm = render.get("render_right_arm");
//
// if (name_block != null)
// override.setRenderNameBlock(name_block.getAsString());
// if (name_entity != null)
// override.setRenderNameEntity(name_entity.getAsString());
// if (translation != null)
// override.setRenderTranslation(translation.getAsString());
// if (rotation != null)
// override.setRenderRotation(rotation.getAsString());
// if (scaled != null)
// override.setRenderscaled(scaled.getAsString());
// if (nbt != null)
// override.setRenderNBT(JsonToNBT.getTagFromJson(nbt.toString()));
// if (rotationLeftArm != null)
// override.setRenderRotationLeftArm(rotationLeftArm.getAsString());
// if (rotationRightArm != null)
// override.setRenderRotationRightArm(rotationRightArm.getAsString());
// if (renderLeftArm != null)
// override.setRenderLeftArm(renderLeftArm.getAsBoolean());
// if (renderRightArm != null)
// override.setRenderRightArm(renderRightArm.getAsBoolean());
// }
//
// if (effects != null)
// {
// JsonElement commandInit = effects.get("commandPickup");
// JsonElement commandLoop = effects.get("commandLoop");
// JsonElement commandPlace = effects.get("commandPlace");
//
// if (commandInit != null)
// override.setCommandInit(commandInit.getAsString());
// if (commandLoop != null)
// override.setCommandLoop(commandLoop.getAsString());
// if (commandPlace != null)
// override.setCommandPlace(commandPlace.getAsString());
// }
//
// OVERRIDES.put(override.hashCode(), override);
// }
// }
// }
//
// System.out.println("Successfully parsed scripts!");
// } catch (Exception e)
// {
// CarryOn.LOGGER.error(e);
// }
// }
// public static void parseScripts()
// {
// OVERRIDES.clear();
//
// try
// {
// if (!Settings.useScripts.get())
// return;
//
// for (File file : scripts)
// {
// boolean errored = false;
// JsonParser parser = new JsonParser();
// JsonObject json = (JsonObject) parser.parse(new
// FileReader(file.getAbsolutePath()));
//
// JsonObject object = (JsonObject) json.get("object");
// JsonObject conditions = (JsonObject) json.get("conditions");
// JsonObject render = (JsonObject) json.get("render");
// JsonObject effects = (JsonObject) json.get("effects");
//
// if ((object != null && conditions != null) || (object != null && render
// != null) || (object != null && effects != null))
// {
// JsonObject block = (JsonObject) object.get("block");
// JsonObject entity = (JsonObject) object.get("entity");
//
// if ((block == null && entity == null) || (block != null && entity !=
// null))
// errored = true;
//
// if (!errored)
// {
// CarryOnOverride override = new CarryOnOverride(file.getAbsolutePath());
//
// if (block != null)
// {
// override.setBlock(true);
// JsonElement name = block.get("name");
// JsonElement material = block.get("material");
// JsonElement hardness = block.get("hardness");
// JsonElement resistance = block.get("resistance");
// JsonObject nbt = (JsonObject) block.get("nbt");
//
// if (name != null)
// override.setTypeNameBlock(name.getAsString());
// if (material != null)
// override.setTypeMaterial(material.getAsString());
// if (hardness != null)
// override.setTypeHardness(hardness.getAsString());
// if (resistance != null)
// override.setTypeResistance(resistance.getAsString());
// if (nbt != null)
// override.setTypeBlockTag(JsonToNBT.getTagFromJson(nbt.toString()));
// } else
// {
// override.setEntity(true);
// JsonElement name = entity.get("name");
// JsonElement health = entity.get("health");
// JsonElement height = entity.get("height");
// JsonElement width = entity.get("width");
// JsonObject nbt = (JsonObject) entity.get("nbt");
//
// if (name != null)
// override.setTypeNameEntity(name.getAsString());
// if (health != null)
// override.setTypeHealth(health.getAsString());
// if (height != null)
// override.setTypeHeight(height.getAsString());
// if (width != null)
// override.setTypeWidth(width.getAsString());
// if (nbt != null)
// override.setTypeEntityTag(JsonToNBT.getTagFromJson(nbt.toString()));
// }
//
// if (conditions != null)
// {
// JsonElement gamestage = conditions.get("gamestage");
// JsonElement achievement = conditions.get("advancement");
// JsonElement xp = conditions.get("xp");
// JsonElement gamemode = conditions.get("gamemode");
// JsonElement scoreboard = conditions.get("scoreboard");
// JsonElement position = conditions.get("position");
// JsonElement potionEffects = conditions.get("effects");
//
// if (gamestage != null)
// override.setConditionGamestage(gamestage.getAsString());
// if (achievement != null)
// override.setConditionAchievement(achievement.getAsString());
// if (xp != null)
// override.setConditionXp(xp.getAsString());
// if (gamemode != null)
// override.setConditionGamemode(gamemode.getAsString());
// if (scoreboard != null)
// override.setConditionScoreboard(scoreboard.getAsString());
// if (position != null)
// override.setConditionPosition(position.getAsString());
// if (potionEffects != null)
// override.setConditionEffects(potionEffects.getAsString());
// }
//
// if (render != null)
// {
// JsonElement name_block = render.get("name_block");
// JsonElement name_entity = render.get("name_entity");
// JsonObject nbt = (JsonObject) render.get("nbt");
// JsonElement translation = render.get("translation");
// JsonElement rotation = render.get("rotation");
// JsonElement scaled = render.get("scale");
// JsonElement rotationLeftArm = render.get("rotation_left_arm");
// JsonElement rotationRightArm = render.get("rotation_right_arm");
// JsonElement renderLeftArm = render.get("render_left_arm");
// JsonElement renderRightArm = render.get("render_right_arm");
//
// if (name_block != null)
// override.setRenderNameBlock(name_block.getAsString());
// if (name_entity != null)
// override.setRenderNameEntity(name_entity.getAsString());
// if (translation != null)
// override.setRenderTranslation(translation.getAsString());
// if (rotation != null)
// override.setRenderRotation(rotation.getAsString());
// if (scaled != null)
// override.setRenderscaled(scaled.getAsString());
// if (nbt != null)
// override.setRenderNBT(JsonToNBT.getTagFromJson(nbt.toString()));
// if (rotationLeftArm != null)
// override.setRenderRotationLeftArm(rotationLeftArm.getAsString());
// if (rotationRightArm != null)
// override.setRenderRotationRightArm(rotationRightArm.getAsString());
// if (renderLeftArm != null)
// override.setRenderLeftArm(renderLeftArm.getAsBoolean());
// if (renderRightArm != null)
// override.setRenderRightArm(renderRightArm.getAsBoolean());
// }
//
// if (effects != null)
// {
// JsonElement commandInit = effects.get("commandPickup");
// JsonElement commandLoop = effects.get("commandLoop");
// JsonElement commandPlace = effects.get("commandPlace");
//
// if (commandInit != null)
// override.setCommandInit(commandInit.getAsString());
// if (commandLoop != null)
// override.setCommandLoop(commandLoop.getAsString());
// if (commandPlace != null)
// override.setCommandPlace(commandPlace.getAsString());
// }
//
// OVERRIDES.put(override.hashCode(), override);
// }
// }
// }
//
// System.out.println("Successfully parsed scripts!");
// } catch (Exception e)
// {
// CarryOn.LOGGER.error(e);
// }
// }
}

View File

@ -23,7 +23,7 @@ import tschipp.carryon.network.client.ScriptReloadPacket;
@EventBusSubscriber(modid = CarryOn.MODID, bus = Bus.FORGE)
public class ScriptReloadListener extends SimpleJsonResourceReloadListener
{
private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().disableHtmlEscaping().create();
private static final Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
public ScriptReloadListener()
{
@ -37,7 +37,7 @@ public class ScriptReloadListener extends SimpleJsonResourceReloadListener
objects.forEach((path, jsonElem) -> {
CarryOnOverride override = new CarryOnOverride(jsonElem, path);
if(!override.isInvalid)
if (!override.isInvalid)
ScriptReader.OVERRIDES.put(override.hashCode(), override);
});
@ -46,7 +46,7 @@ public class ScriptReloadListener extends SimpleJsonResourceReloadListener
CarryOn.network.send(PacketDistributor.ALL.noArg(), new ScriptReloadPacket(ScriptReader.OVERRIDES.values()));
}
}
@SubscribeEvent
public static void onDatapackRegister(AddReloadListenerEvent event)
{

View File

@ -1,100 +1,125 @@
//package tschipp.carryon.compat.obfuscate;
// package tschipp.carryon.compat.obfuscate;
//
//import com.mrcrayfish.obfuscate.client.event.PlayerModelEvent;
// import com.mrcrayfish.obfuscate.client.event.PlayerModelEvent;
//
//import net.minecraft.client.model.PlayerModel;
//import net.minecraft.client.renderer.model.ModelRenderer;
//import net.minecraft.entity.player.PlayerEntity;
//import net.minecraft.world.item.ItemStack;
//import net.minecraftforge.api.distmarker.Dist;
//import net.minecraftforge.api.distmarker.OnlyIn;
//import net.minecraftforge.eventbus.api.SubscribeEvent;
//import tschipp.carryon.common.config.Configs.Settings;
//import tschipp.carryon.common.handler.RegistrationHandler;
//import tschipp.carryon.common.helper.ScriptParseHelper;
//import tschipp.carryon.common.item.ItemCarryonBlock;
//import tschipp.carryon.common.item.ItemCarryonEntity;
//import tschipp.carryon.common.scripting.CarryOnOverride;
//import tschipp.carryon.common.scripting.ScriptChecker;
// import net.minecraft.client.model.PlayerModel;
// import net.minecraft.client.renderer.model.ModelRenderer;
// import net.minecraft.entity.player.PlayerEntity;
// import net.minecraft.world.item.ItemStack;
// import net.minecraftforge.api.distmarker.Dist;
// import net.minecraftforge.api.distmarker.OnlyIn;
// import net.minecraftforge.eventbus.api.SubscribeEvent;
// import tschipp.carryon.common.config.Configs.Settings;
// import tschipp.carryon.common.handler.RegistrationHandler;
// import tschipp.carryon.common.helper.ScriptParseHelper;
// import tschipp.carryon.common.item.ItemCarryonBlock;
// import tschipp.carryon.common.item.ItemCarryonEntity;
// import tschipp.carryon.common.scripting.CarryOnOverride;
// import tschipp.carryon.common.scripting.ScriptChecker;
//
//public class ObfuscateEvents
//{
// public class ObfuscateEvents
// {
//
// @SubscribeEvent
// public void preModelPlayerEvent(PlayerModelEvent.SetupAngles.Post event)
// {
// if(!Settings.renderArms.get())
// return;
//
// PlayerEntity player = event.getPlayer();
// @SubscribeEvent
// public void preModelPlayerEvent(PlayerModelEvent.SetupAngles.Post event)
// {
// if(!Settings.renderArms.get())
// return;
//
// Pose pose = player.getPose();
// if (pose == Pose.SWIMMING || pose == Pose.FALL_FLYING)
// return;
//
// PlayerModel<?> model = event.getModelPlayer();
// ItemStack stack = player.getMainHandItem();
// if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack) || stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))
// {
//
// float rotation = 0;
//
// CarryOnOverride overrider = ScriptChecker.getOverride(player);
// if (overrider != null)
// {
// float[] rotLeft = null;
// float[] rotRight = null;
// if (overrider.getRenderRotationLeftArm() != null)
// rotLeft = ScriptParseHelper.getXYZArray(overrider.getRenderRotationLeftArm());
// if (overrider.getRenderRotationRightArm() != null)
// rotRight = ScriptParseHelper.getXYZArray(overrider.getRenderRotationRightArm());
// PlayerEntity player = event.getPlayer();
//
// boolean renderRight = overrider.isRenderRightArm();
// boolean renderLeft = overrider.isRenderLeftArm();
// Pose pose = player.getPose();
// if (pose == Pose.SWIMMING || pose == Pose.FALL_FLYING)
// return;
//
// if (renderLeft && rotLeft != null)
// {
// renderArmPre(model.leftArm, (float) rotLeft[0], (float) rotLeft[2], rotation);
// renderArmPre(model.leftSleeve, (float) rotLeft[0], (float) rotLeft[2], rotation);
// }
// else if (renderLeft)
// {
// renderArmPre(model.leftArm, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
// renderArmPre(model.leftSleeve, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
// }
// PlayerModel<?> model = event.getModelPlayer();
// ItemStack stack = player.getMainHandItem();
// if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile &&
// ItemCarryonBlock.hasTileData(stack) || stack.getItem() ==
// RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))
// {
//
// if (renderRight && rotRight != null)
// {
// renderArmPre(model.rightArm, (float) rotRight[0], (float) rotRight[2], rotation);
// renderArmPre(model.rightSleeve, (float) rotRight[0], (float) rotRight[2], rotation);
// }
// else if (renderRight)
// {
// renderArmPre(model.rightArm, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
// renderArmPre(model.rightSleeve, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
// }
// float rotation = 0;
//
// }
// else
// {
// renderArmPre(model.rightArm, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
// renderArmPre(model.rightSleeve, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
// renderArmPre(model.leftArm, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
// renderArmPre(model.leftSleeve, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
// }
//
// }
//
// }
//
//
// @OnlyIn(Dist.CLIENT)
// private void renderArmPre(ModelRenderer arm, float x, float z, float rotation)
// {
// arm.xRot = (float) -x;
// arm.yRot = (float) -Math.toRadians(rotation);
// arm.zRot = (float) z;
// }
//
//
//}
// CarryOnOverride overrider = ScriptChecker.getOverride(player);
// if (overrider != null)
// {
// float[] rotLeft = null;
// float[] 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.leftArm, (float) rotLeft[0], (float) rotLeft[2],
// rotation);
// renderArmPre(model.leftSleeve, (float) rotLeft[0], (float) rotLeft[2],
// rotation);
// }
// else if (renderLeft)
// {
// renderArmPre(model.leftArm, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) -
// (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0),
// (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
// renderArmPre(model.leftSleeve, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) -
// (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0),
// (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
// }
//
// if (renderRight && rotRight != null)
// {
// renderArmPre(model.rightArm, (float) rotRight[0], (float) rotRight[2],
// rotation);
// renderArmPre(model.rightSleeve, (float) rotRight[0], (float) rotRight[2],
// rotation);
// }
// else if (renderRight)
// {
// renderArmPre(model.rightArm, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) -
// (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0),
// (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
// renderArmPre(model.rightSleeve, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f)
// - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0),
// (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
// }
//
// }
// else
// {
// renderArmPre(model.rightArm, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) -
// (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0),
// (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
// renderArmPre(model.rightSleeve, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f)
// - (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0),
// (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation);
// renderArmPre(model.leftArm, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) -
// (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0),
// (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
// renderArmPre(model.leftSleeve, 0.8F + (player.isShiftKeyDown() ? 0.2f : 0f) -
// (stack.getItem() == RegistrationHandler.itemEntity ? -0.2f : 0),
// (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation);
// }
//
// }
//
// }
//
//
// @OnlyIn(Dist.CLIENT)
// private void renderArmPre(ModelRenderer arm, float x, float z, float
// rotation)
// {
// arm.xRot = (float) -x;
// arm.yRot = (float) -Math.toRadians(rotation);
// arm.zRot = (float) z;
// }
//
//
// }

View File

@ -38,9 +38,9 @@ public class CarrySlotPacket
public void toBytes(ByteBuf buf)
{
buf.writeInt(slot);
buf.writeInt(carryOverride);
buf.writeInt(entityid);
buf.writeInt(this.slot);
buf.writeInt(this.carryOverride);
buf.writeInt(this.entityid);
}
public void handle(Supplier<NetworkEvent.Context> ctx)
@ -53,15 +53,13 @@ public class CarrySlotPacket
if (world != null)
{
Entity e = world.getEntity(entityid);
Entity e = world.getEntity(this.entityid);
if (e != null && e instanceof Player)
if (e instanceof Player player)
{
Player player = (Player) e;
ctx.get().setPacketHandled(true);
if (slot >= 9)
if (this.slot >= 9)
{
player.getPersistentData().remove("carrySlot");
player.getPersistentData().remove("overrideKey");
@ -69,9 +67,9 @@ public class CarrySlotPacket
else
{
player.getPersistentData().putInt("carrySlot", slot);
if (carryOverride != 0)
ScriptChecker.setCarryOnOverride(player, carryOverride);
player.getPersistentData().putInt("carrySlot", this.slot);
if (this.carryOverride != 0)
ScriptChecker.setCarryOnOverride(player, this.carryOverride);
}
}

View File

@ -12,7 +12,7 @@ import tschipp.carryon.common.scripting.ScriptReader;
public class ScriptReloadPacket
{
private List<CarryOnOverride> overrides = new ArrayList<CarryOnOverride>();
private List<CarryOnOverride> overrides = new ArrayList<>();
public ScriptReloadPacket()
{
@ -20,22 +20,22 @@ public class ScriptReloadPacket
public ScriptReloadPacket(Collection<CarryOnOverride> collection)
{
overrides.addAll(collection);
this.overrides.addAll(collection);
}
public ScriptReloadPacket(FriendlyByteBuf buf)
{
int size = buf.readInt();
for(int i = 0; i < size; i++)
for (int i = 0; i < size; i++)
{
overrides.add(CarryOnOverride.deserialize(buf));
}
this.overrides.add(CarryOnOverride.deserialize(buf));
}
}
public void toBytes(FriendlyByteBuf buf)
{
buf.writeInt(overrides.size());
overrides.forEach(override -> override.serialize(buf));
buf.writeInt(this.overrides.size());
this.overrides.forEach(override -> override.serialize(buf));
}
public void handle(Supplier<NetworkEvent.Context> ctx)
@ -45,8 +45,8 @@ public class ScriptReloadPacket
ctx.get().enqueueWork(() -> {
ScriptReader.OVERRIDES.clear();
overrides.forEach(override -> {
this.overrides.forEach(override -> {
ScriptReader.OVERRIDES.put(override.hashCode(), override);
});

View File

@ -23,7 +23,7 @@ public class SyncKeybindPacket
public void toBytes(ByteBuf buf)
{
buf.writeBoolean(pressed);
buf.writeBoolean(this.pressed);
}
public void handle(Supplier<NetworkEvent.Context> ctx)
@ -34,7 +34,7 @@ public class SyncKeybindPacket
ServerPlayer player = ctx.get().getSender();
CarryOnKeybinds.setKeyPressed(player, pressed);
CarryOnKeybinds.setKeyPressed(player, this.pressed);
ctx.get().setPacketHandled(true);
});

View File

@ -9,24 +9,24 @@ import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.helper.KeyboardCallbackWrapper;
import tschipp.carryon.common.helper.ScrollCallbackWrapper;
public class ClientProxy implements IProxy {
public class ClientProxy implements IProxy
{
@Override
public void setup(FMLCommonSetupEvent event)
{
RegistrationHandler.regClientEvents();
CarryOnKeybinds.init();
new ScrollCallbackWrapper().setup(Minecraft.getInstance());;
new ScrollCallbackWrapper().setup(Minecraft.getInstance());
new KeyboardCallbackWrapper().setup(Minecraft.getInstance());
}
@Override
public Player getPlayer()
{
return Minecraft.getInstance().player;
}

View File

@ -6,10 +6,10 @@ import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
public interface IProxy
{
public void setup(final FMLCommonSetupEvent event);
public Player getPlayer();
public Level getWorld();
}