fixed bugs

This commit is contained in:
Tschipp 2023-04-25 17:12:06 +02:00
parent 308fc5c775
commit 058df989fc
14 changed files with 381 additions and 436 deletions

View File

@ -1,16 +1,9 @@
package tschipp.carryon; package tschipp.carryon;
import java.io.File;
import java.util.Optional;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
@ -21,22 +14,22 @@ import net.minecraftforge.fml.network.NetworkDirection;
import net.minecraftforge.fml.network.NetworkRegistry; import net.minecraftforge.fml.network.NetworkRegistry;
import net.minecraftforge.fml.network.simple.SimpleChannel; import net.minecraftforge.fml.network.simple.SimpleChannel;
import net.minecraftforge.forgespi.language.IModInfo; import net.minecraftforge.forgespi.language.IModInfo;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import tschipp.carryon.common.config.Configs; import tschipp.carryon.common.config.Configs;
import tschipp.carryon.common.handler.RegistrationHandler; import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.network.client.CarrySlotPacket; import tschipp.carryon.network.client.CarrySlotPacket;
import tschipp.carryon.network.client.ScriptReloadPacket; import tschipp.carryon.network.client.ScriptReloadPacket;
import tschipp.carryon.network.server.SyncKeybindPacket; import tschipp.carryon.network.server.SyncKeybindPacket;
import tschipp.carryon.proxy.ClientProxy;
import tschipp.carryon.proxy.IProxy; import java.io.File;
import tschipp.carryon.proxy.ServerProxy; import java.util.Optional;
@Mod(CarryOn.MODID) @Mod(CarryOn.MODID)
@EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) @EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
public class CarryOn public class CarryOn
{ {
public static IProxy proxy = DistExecutor.safeRunForDist(() -> ClientProxy::new, () -> ServerProxy::new);
public static final String MODID = "carryon"; public static final String MODID = "carryon";
public static final Logger LOGGER = LogManager.getFormatterLogger("CarryOn"); public static final Logger LOGGER = LogManager.getFormatterLogger("CarryOn");
public static final String DEPENDENCIES = "required-after:forge@[13.20.1.2386,);after:gamestages;"; public static final String DEPENDENCIES = "required-after:forge@[13.20.1.2386,);after:gamestages;";
@ -72,12 +65,8 @@ public class CarryOn
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(); RegistrationHandler.regCommonEvents();
// Init
RegistrationHandler.regOverrideList();
RegistrationHandler.regCaps(); RegistrationHandler.regCaps();
RegistrationHandler.regOverrideList();
proxy.setup(event);
} }
@SubscribeEvent @SubscribeEvent

View File

@ -1,12 +1,9 @@
package tschipp.carryon.client.event; package tschipp.carryon.client.event;
import java.lang.reflect.InvocationTargetException; import com.google.common.collect.ImmutableMap;
import java.util.Optional;
import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.IVertexBuilder; import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
@ -14,6 +11,7 @@ import net.minecraft.client.GameSettings;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity; import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.screen.inventory.ContainerScreen; import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.IRenderTypeBuffer.Impl; import net.minecraft.client.renderer.IRenderTypeBuffer.Impl;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
@ -49,7 +47,6 @@ import net.minecraftforge.client.event.GuiScreenEvent.InitGuiEvent;
import net.minecraftforge.client.event.RenderHandEvent; import net.minecraftforge.client.event.RenderHandEvent;
import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.client.event.ClientPlayerNetworkEvent.LoggedInEvent;
import net.minecraftforge.event.TickEvent.PlayerTickEvent; import net.minecraftforge.event.TickEvent.PlayerTickEvent;
import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.EventPriority;
@ -60,7 +57,6 @@ import tschipp.carryon.CarryOn;
import tschipp.carryon.client.helper.CarryRenderHelper; import tschipp.carryon.client.helper.CarryRenderHelper;
import tschipp.carryon.client.keybinds.CarryOnKeybinds; import tschipp.carryon.client.keybinds.CarryOnKeybinds;
import tschipp.carryon.common.config.Configs.Settings; import tschipp.carryon.common.config.Configs.Settings;
import tschipp.carryon.common.handler.ListHandler;
import tschipp.carryon.common.handler.ModelOverridesHandler; import tschipp.carryon.common.handler.ModelOverridesHandler;
import tschipp.carryon.common.handler.RegistrationHandler; import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.helper.KeyboardCallbackWrapper.KeyPressedEvent; import tschipp.carryon.common.helper.KeyboardCallbackWrapper.KeyPressedEvent;
@ -73,6 +69,10 @@ import tschipp.carryon.common.scripting.CarryOnOverride;
import tschipp.carryon.common.scripting.ScriptChecker; import tschipp.carryon.common.scripting.ScriptChecker;
import tschipp.carryon.network.server.SyncKeybindPacket; import tschipp.carryon.network.server.SyncKeybindPacket;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import java.util.Optional;
public class RenderEvents public class RenderEvents
{ {
/* /*
@ -242,7 +242,7 @@ public class RenderEvents
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack) && perspective == 0 && !f1) if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack) && perspective == 0 && !f1)
{ {
if (ModList.get().isLoaded("realrender") || ModList.get().isLoaded("rfpr")) if (ModList.get().isLoaded("firstperson") || ModList.get().isLoaded("firstpersonmod"))
return; return;
Block block = ItemCarryonBlock.getBlock(stack); Block block = ItemCarryonBlock.getBlock(stack);
@ -317,7 +317,6 @@ public class RenderEvents
{ {
World world = Minecraft.getInstance().level; World world = Minecraft.getInstance().level;
float partialticks = event.getPartialTicks(); float partialticks = event.getPartialTicks();
Impl buffer = IRenderTypeBuffer.immediate(Tessellator.getInstance().getBuilder());
MatrixStack matrix = event.getMatrixStack(); MatrixStack matrix = event.getMatrixStack();
int light = 0; int light = 0;
int perspective = CarryRenderHelper.getPerspective(); int perspective = CarryRenderHelper.getPerspective();
@ -326,109 +325,120 @@ public class RenderEvents
RenderSystem.enableBlend(); RenderSystem.enableBlend();
RenderSystem.disableCull(); RenderSystem.disableCull();
RenderSystem.disableDepthTest(); RenderSystem.disableDepthTest();
Map<RenderType, BufferBuilder> builders = new ImmutableMap.Builder<RenderType, BufferBuilder>()
.put(RenderType.glint(), new BufferBuilder(RenderType.glint().bufferSize()))
.put(RenderType.glintDirect(), new BufferBuilder(RenderType.glintDirect().bufferSize()))
.put(RenderType.glintTranslucent(), new BufferBuilder(RenderType.glintTranslucent().bufferSize()))
.put(RenderType.entityGlint(), new BufferBuilder(RenderType.entityGlint().bufferSize()))
.put(RenderType.entityGlintDirect(), new BufferBuilder(RenderType.entityGlintDirect().bufferSize()))
.build();
Impl buffer = IRenderTypeBuffer.immediateWithBuffers(builders, Tessellator.getInstance().getBuilder());
for (PlayerEntity player : world.players())
{
if (perspective == 0 && player == Minecraft.getInstance().player)
continue;
light = Minecraft.getInstance().getEntityRenderDispatcher().getPackedLightCoords(player, partialticks); for (PlayerEntity player : world.players()) {
ItemStack stack = player.getMainHandItem(); try {
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack)) if (perspective == 0 && player == Minecraft.getInstance().player && !(ModList.get().isLoaded("firstperson") || ModList.get().isLoaded("firstpersonmod")))
{ continue;
Block block = ItemCarryonBlock.getBlock(stack);
BlockState state = ItemCarryonBlock.getBlockState(stack);
CompoundNBT tag = ItemCarryonBlock.getTileData(stack);
ItemStack tileItem = ItemCarryonBlock.getItemStack(stack);
applyBlockTransformations(player, partialticks, matrix, block);
IBakedModel 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)); light = Minecraft.getInstance().getEntityRenderDispatcher().getPackedLightCoords(player, partialticks);
ItemStack stack = player.getMainHandItem();
CarryOnOverride carryOverride = ScriptChecker.getOverride(player); if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack)) {
if (carryOverride != null) Block block = ItemCarryonBlock.getBlock(stack);
{ BlockState state = ItemCarryonBlock.getBlockState(stack);
CarryRenderHelper.performOverrideTransformation(matrix, carryOverride); CompoundNBT tag = ItemCarryonBlock.getTileData(stack);
ItemStack tileItem = ItemCarryonBlock.getItemStack(stack);
if (!carryOverride.getRenderNameBlock().isEmpty()) applyBlockTransformations(player, partialticks, matrix, block);
{
Block b = StringParser.getBlock(carryOverride.getRenderNameBlock());
if (b != null)
{
ItemStack s = new ItemStack(b, 1);
s.setTag(carryOverride.getRenderNBT());
model = Minecraft.getInstance().getItemRenderer().getModel(s, world, player);
}
}
}
Minecraft.getInstance().getTextureManager().bind(AtlasTexture.LOCATION_BLOCKS); IBakedModel 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));
CarryRenderHelper.renderItem(state, tag, stack, tileItem, matrix, buffer, light, model);
buffer.endBatch();
matrix.popPose();
drawArms(player, partialticks, matrix, buffer, light);
matrix.popPose();
}
else if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))
{
Entity entity = RenderEntityEvents.getEntity(stack, world);
if (entity != null)
{
applyEntityTransformations(player, partialticks, matrix, entity);
manager.setRenderShadow(false);
CarryOnOverride carryOverride = ScriptChecker.getOverride(player); CarryOnOverride carryOverride = ScriptChecker.getOverride(player);
if (carryOverride != null) if (carryOverride != null) {
{
CarryRenderHelper.performOverrideTransformation(matrix, carryOverride); CarryRenderHelper.performOverrideTransformation(matrix, carryOverride);
String entityname = carryOverride.getRenderNameEntity(); if (!carryOverride.getRenderNameBlock().isEmpty()) {
if (entityname != null) Block b = StringParser.getBlock(carryOverride.getRenderNameBlock());
{ if (b != null) {
Entity newEntity = null; ItemStack s = new ItemStack(b, 1);
s.setTag(carryOverride.getRenderNBT());
Optional<EntityType<?>> type = EntityType.byString(entityname); model = Minecraft.getInstance().getItemRenderer().getModel(s, world, player);
if (type.isPresent())
newEntity = type.get().create(world);
if (newEntity != null)
{
CompoundNBT nbttag = carryOverride.getRenderNBT();
if (nbttag != null)
newEntity.deserializeNBT(nbttag);
entity = newEntity;
entity.yRot = 0.0f;
entity.yRotO = 0.0f;
entity.setYHeadRot(0.0f);
entity.xRot = 0.0f;
entity.xRotO = 0.0f;
} }
} }
} }
if (entity instanceof LivingEntity) Minecraft.getInstance().getTextureManager().bind(AtlasTexture.LOCATION_BLOCKS);
((LivingEntity) entity).hurtTime = 0; CarryRenderHelper.renderItem(state, tag, stack, tileItem, matrix, buffer, light, model);
manager.render(entity, 0, 0, 0, 0f, 0, matrix, buffer, light);
buffer.endBatch(); buffer.endBatch();
matrix.popPose(); matrix.popPose();
drawArms(player, partialticks, matrix, buffer, light); drawArms(player, partialticks, matrix, buffer, light);
manager.setRenderShadow(true);
matrix.popPose(); matrix.popPose();
} } else if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack)) {
} Entity entity = RenderEntityEvents.getEntity(stack, world);
if (entity != null) {
applyEntityTransformations(player, partialticks, matrix, entity);
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())
newEntity = type.get().create(world);
if (newEntity != null) {
CompoundNBT nbttag = carryOverride.getRenderNBT();
if (nbttag != null)
newEntity.deserializeNBT(nbttag);
entity = newEntity;
entity.yRot = 0.0f;
entity.yRotO = 0.0f;
entity.setYHeadRot(0.0f);
entity.xRot = 0.0f;
entity.xRotO = 0.0f;
}
}
}
if (entity instanceof LivingEntity)
((LivingEntity) entity).hurtTime = 0;
manager.render(entity, 0, 0, 0, 0f, 0, matrix, buffer, light);
buffer.endBatch();
matrix.popPose();
drawArms(player, partialticks, matrix, buffer, light);
manager.setRenderShadow(true);
matrix.popPose();
}
}
} catch (Exception e) {
}
} }
buffer.endBatch();
buffer.endBatch(RenderType.entitySolid(AtlasTexture.LOCATION_BLOCKS));
buffer.endBatch(RenderType.entityCutout(AtlasTexture.LOCATION_BLOCKS));
buffer.endBatch(RenderType.entityCutoutNoCull(AtlasTexture.LOCATION_BLOCKS));
buffer.endBatch(RenderType.entitySmoothCutout(AtlasTexture.LOCATION_BLOCKS));
RenderSystem.enableDepthTest(); RenderSystem.enableDepthTest();
RenderSystem.enableCull(); RenderSystem.enableCull();
RenderSystem.disableBlend(); RenderSystem.disableBlend();

View File

@ -15,14 +15,12 @@ public class PositionProvider implements ICapabilitySerializable<CompoundNBT>
private IPosition instance = POSITION_CAPABILITY.getDefaultInstance(); private IPosition instance = POSITION_CAPABILITY.getDefaultInstance();
@SuppressWarnings("unchecked")
@Override @Override
public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side)
{ {
if (cap == POSITION_CAPABILITY) if (cap == POSITION_CAPABILITY)
return (LazyOptional<T>) LazyOptional.of(() -> { return (LazyOptional<T>) LazyOptional.of(TEPosition::new);
return new TEPosition();
});
return LazyOptional.empty(); return LazyOptional.empty();
} }

View File

@ -1,11 +1,7 @@
package tschipp.carryon.common.config; package tschipp.carryon.common.config;
import java.util.Arrays;
import java.util.List;
import com.electronwill.nightconfig.core.CommentedConfig; import com.electronwill.nightconfig.core.CommentedConfig;
import com.electronwill.nightconfig.core.file.CommentedFileConfig; import com.electronwill.nightconfig.core.file.CommentedFileConfig;
import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.common.ForgeConfigSpec.BooleanValue; import net.minecraftforge.common.ForgeConfigSpec.BooleanValue;
import net.minecraftforge.common.ForgeConfigSpec.ConfigValue; import net.minecraftforge.common.ForgeConfigSpec.ConfigValue;
@ -18,6 +14,10 @@ import net.minecraftforge.fml.config.ModConfig;
import tschipp.carryon.CarryOn; import tschipp.carryon.CarryOn;
import tschipp.carryon.common.handler.ListHandler; import tschipp.carryon.common.handler.ListHandler;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@Mod.EventBusSubscriber(modid = CarryOn.MODID, bus = Bus.MOD) @Mod.EventBusSubscriber(modid = CarryOn.MODID, bus = Bus.MOD)
public class Configs { public class Configs {
@ -42,8 +42,7 @@ public class Configs {
@SubscribeEvent @SubscribeEvent
public static void onLoad(final ModConfig.Loading event) public static void onLoad(final ModConfig.Loading event)
{ {
if (event.getConfig().getModId().equals(CarryOn.MODID)) if (event.getConfig().getModId().equals(CarryOn.MODID)) {
{
ListHandler.initConfigLists(); ListHandler.initConfigLists();
CommentedConfig cfg = event.getConfig().getConfigData(); CommentedConfig cfg = event.getConfig().getConfigData();
@ -56,8 +55,7 @@ public class Configs {
@SubscribeEvent @SubscribeEvent
public static void onConfigChanged(ModConfig.Reloading event) public static void onConfigChanged(ModConfig.Reloading event)
{ {
if (event.getConfig().getModId().equals(CarryOn.MODID)) if (event.getConfig().getModId().equals(CarryOn.MODID)) {
{
ListHandler.initConfigLists(); ListHandler.initConfigLists();
CommentedConfig cfg = event.getConfig().getConfigData(); CommentedConfig cfg = event.getConfig().getConfigData();
@ -236,15 +234,15 @@ public class Configs {
allowedEntities = s allowedEntities = s
.comment("Entities that CAN be picked up (useWhitelistEntities must be true)") .comment("Entities that CAN be picked up (useWhitelistEntities must be true)")
.defineList("whitelist.allowedEntities", Arrays.asList(new String[]{}), (obj) -> obj instanceof String ? true : false); .defineList("whitelist.allowedEntities", Arrays.asList(new String[]{}), (obj) -> obj instanceof String);
allowedBlocks = s allowedBlocks = s
.comment("Blocks that CAN be picked up (useWhitelistBlocks must be true)") .comment("Blocks that CAN be picked up (useWhitelistBlocks must be true)")
.defineList("whitelist.allowedBlocks", Arrays.asList(new String[]{}), (obj) -> obj instanceof String ? true : false); .defineList("whitelist.allowedBlocks", Arrays.asList(new String[]{}), (obj) -> obj instanceof String);
allowedStacking = s allowedStacking = s
.comment("Entities that CAN have other entities stacked on top of them (useWhitelistStacking must be true)") .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); .defineList("whitelist.allowedStacking", Arrays.asList(new String[]{}), (obj) -> obj instanceof String);
} }
} }
@ -262,133 +260,124 @@ public class Configs {
forbiddenTiles = s forbiddenTiles = s
.comment("Blocks that cannot be picked up") .comment("Blocks that cannot be picked up")
.defineList("blacklist.forbiddenTiles", Arrays.asList(new String[] .defineList("blacklist.forbiddenTiles", Arrays.asList("#forge:immovable",
{ "#forge:relocation_not_supported",
"#forge:immovable", "minecraft:end_portal",
"#forge:relocation_not_supported", "minecraft:end_gateway",
"minecraft:end_portal", "minecraft:tall_grass",
"minecraft:end_gateway", "minecraft:large_fern",
"minecraft:tall_grass", "minecraft:peony",
"minecraft:large_fern", "minecraft:rose_bush",
"minecraft:peony", "minecraft:lilac",
"minecraft:rose_bush", "minecraft:sunflower",
"minecraft:lilac", "minecraft:*_bed",
"minecraft:sunflower", "minecraft:oak_door",
"minecraft:*_bed", "minecraft:iron_door",
"minecraft:oak_door", "minecraft:spruce_door",
"minecraft:iron_door", "minecraft:birch_door",
"minecraft:spruce_door", "minecraft:jungle_door",
"minecraft:birch_door", "minecraft:acacia_door",
"minecraft:jungle_door", "minecraft:dark_oak_door",
"minecraft:acacia_door", "minecraft:waterlily",
"minecraft:dark_oak_door", "minecraft:cake",
"minecraft:waterlily", "minecraft:nether_portal",
"minecraft:cake", "minecraft:tall_seagrass",
"minecraft:nether_portal", "animania:block_trough",
"minecraft:tall_seagrass", "animania:block_invisiblock",
"animania:block_trough", "colossalchests:*",
"animania:block_invisiblock", "ic2:*",
"colossalchests:*", "bigreactors:*",
"ic2:*", "forestry:*",
"bigreactors:*", "tconstruct:*",
"forestry:*", "rustic:*",
"tconstruct:*", "botania:*",
"rustic:*", "astralsorcery:*",
"botania:*", "quark:colored_bed_*",
"astralsorcery:*", "immersiveengineering:*",
"quark:colored_bed_*", "embers:block_furnace",
"immersiveengineering:*", "embers:ember_bore",
"embers:block_furnace", "embers:ember_activator",
"embers:ember_bore", "embers:mixer",
"embers:ember_activator", "embers:heat_coil",
"embers:mixer", "embers:large_tank",
"embers:heat_coil", "embers:crystal_cell",
"embers:large_tank", "embers:alchemy_pedestal",
"embers:crystal_cell", "embers:boiler",
"embers:alchemy_pedestal", "embers:combustor",
"embers:boiler", "embers:catalzyer",
"embers:combustor", "embers:field_chart",
"embers:catalzyer", "embers:inferno_forge",
"embers:field_chart", "storagedrawers:framingtable",
"embers:inferno_forge", "skyresources:*",
"storagedrawers:framingtable", "lootbags:*",
"skyresources:*", "exsartagine:*",
"lootbags:*", "aquamunda:tank",
"exsartagine:*", "opencomputers:*",
"aquamunda:tank", "malisisdoors:*",
"opencomputers:*", "industrialforegoing:*",
"malisisdoors:*", "minecolonies:*",
"industrialforegoing:*", "thaumcraft:pillar*",
"minecolonies:*", "thaumcraft:infernal_furnace",
"thaumcraft:pillar*", "thaumcraft:placeholder*",
"thaumcraft:infernal_furnace", "thaumcraft:infusion_matrix",
"thaumcraft:placeholder*", "thaumcraft:golem_builder",
"thaumcraft:infusion_matrix", "thaumcraft:thaumatorium*",
"thaumcraft:golem_builder", "magneticraft:oil_heater",
"thaumcraft:thaumatorium*", "magneticraft:solar_panel",
"magneticraft:oil_heater", "magneticraft:steam_engine",
"magneticraft:solar_panel", "magneticraft:shelving_unit",
"magneticraft:steam_engine", "magneticraft:grinder",
"magneticraft:shelving_unit", "magneticraft:sieve",
"magneticraft:grinder", "magneticraft:solar_tower",
"magneticraft:sieve", "magneticraft:solar_mirror",
"magneticraft:solar_tower", "magneticraft:container",
"magneticraft:solar_mirror", "magneticraft:pumpjack",
"magneticraft:container", "magneticraft:solar_panel",
"magneticraft:pumpjack", "magneticraft:refinery",
"magneticraft:solar_panel", "magneticraft:oil_heater",
"magneticraft:refinery", "magneticraft:hydraulic_press",
"magneticraft:oil_heater", "magneticraft:multiblock_gap",
"magneticraft:hydraulic_press", "refinedstorage:*",
"magneticraft:multiblock_gap", "mcmultipart:*",
"refinedstorage:*", "enderstorage:*",
"mcmultipart:*", "betterstorage:*",
"enderstorage:*", "practicallogistics2:*",
"betterstorage:*", "wearablebackpacks:*",
"practicallogistics2:*", "rftools:screen",
"wearablebackpacks:*", "rftools:creative_screen",
"rftools:screen", "create:*",
"rftools:creative_screen", "magic_doorknob:*",
"create:*", "iceandfire:*",
"magic_doorknob:*", "ftbquests:*",
"iceandfire:*", "waystones:*",
"ftbquests:*", "framedblocks:*", "securitycraft:*", "forgemultipartcbe:*", "integrateddynamics:cable", "tanknull:*"), (obj) -> obj instanceof String);
"waystones:*"
}), (obj) -> obj instanceof String);
forbiddenEntities = s forbiddenEntities = s
.comment("Entities that cannot be picked up") .comment("Entities that cannot be picked up")
.defineList("blacklist.forbiddenEntities", Arrays.asList(new String[] .defineList("blacklist.forbiddenEntities", Arrays.asList("minecraft:end_crystal",
{ "minecraft:ender_dragon",
"minecraft:end_crystal", "minecraft:ghast",
"minecraft:ender_dragon", "minecraft:shulker",
"minecraft:ghast", "minecraft:leash_knot",
"minecraft:shulker", "minecraft:armor_stand",
"minecraft:leash_knot", "minecraft:item_frame",
"minecraft:armor_stand", "minecraft:painting",
"minecraft:item_frame", "minecraft:shulker_bullet",
"minecraft:painting", "animania:hamster",
"minecraft:shulker_bullet", "animania:ferret*",
"animania:hamster", "animania:hedgehog*",
"animania:ferret*", "animania:cart",
"animania:hedgehog*", "animania:wagon",
"animania:cart", "mynko:*",
"animania:wagon", "pixelmon:*",
"mynko:*", "mocreatures:*",
"pixelmon:*", "quark:totem",
"mocreatures:*", "vehicle:*",
"quark:totem", "securitycraft:*", "taterzens:npc", "easy_npc:*", "minecolonies:*"), (obj) -> obj instanceof String);
"vehicle:*"
}), (obj) -> obj instanceof String ? true : false);
forbiddenStacking = s forbiddenStacking = s
.comment("Entities that cannot have other entities stacked on top of them") .comment("Entities that cannot have other entities stacked on top of them")
.defineList("blacklist.forbiddenStacking", Arrays.asList(new String[] .defineList("blacklist.forbiddenStacking", Arrays.asList("minecraft:horse"), (obj) -> obj instanceof String);
{
"minecraft:horse"
}), (obj) -> obj instanceof String ? true : false);
} }
} }
@ -404,29 +393,26 @@ public class Configs {
modelOverrides = c modelOverrides = c
.comment("Model Overrides based on NBT or on Meta. Advanced Users Only!") .comment("Model Overrides based on NBT or on Meta. Advanced Users Only!")
.defineList("modeloverrides.overrides", Arrays.asList(new String[] .defineList("modeloverrides.overrides", Arrays.asList("minecraft:hopper->(block)minecraft:hopper",
{ "minecraft:comparator->(block)minecraft:comparator",
"minecraft:hopper->(block)minecraft:hopper", "minecraft:repeater->(block)minecraft:repeater",
"minecraft:comparator->(block)minecraft:comparator", "minecraft:cauldron->(block)minecraft:cauldron",
"minecraft:repeater->(block)minecraft:repeater", "minecraft:brewing_stand->(item)minecraft:brewing_stand",
"minecraft:cauldron->(block)minecraft:cauldron", "minecraft:flower_pot->(block)minecraft:flower_pot",
"minecraft:brewing_stand->(item)minecraft:brewing_stand", "minecraft:sugar_cane->(block)minecraft:sugar_cane",
"minecraft:flower_pot->(block)minecraft:flower_pot", "minecraft:redstone_wire->(item)minecraft:redstone",
"minecraft:sugar_cane->(block)minecraft:sugar_cane", "animania:block_nest->(block)animania:block_nest",
"minecraft:redstone_wire->(item)minecraft:redstone", "animania:cheese_mold;0->(block)animania:cheese_mold;0",
"animania:block_nest->(block)animania:block_nest", "animania:cheese_mold;1->(block)animania:cheese_mold;1",
"animania:cheese_mold;0->(block)animania:cheese_mold;0", "animania:cheese_mold;2->(block)animania:cheese_mold;2",
"animania:cheese_mold;1->(block)animania:cheese_mold;1", "animania:cheese_mold;3->(block)animania:cheese_mold;3",
"animania:cheese_mold;2->(block)animania:cheese_mold;2", "animania:cheese_mold;4->(block)animania:cheese_mold;4",
"animania:cheese_mold;3->(block)animania:cheese_mold;3", "animania:cheese_mold;5->(block)animania:cheese_mold;5",
"animania:cheese_mold;4->(block)animania:cheese_mold;4", "animania:cheese_mold;6->(block)animania:cheese_mold;6",
"animania:cheese_mold;5->(block)animania:cheese_mold;5", "animania:cheese_mold;7->(block)animania:cheese_mold;7",
"animania:cheese_mold;6->(block)animania:cheese_mold;6", "animania:cheese_mold;8->(block)animania:cheese_mold;8",
"animania:cheese_mold;7->(block)animania:cheese_mold;7", "animania:cheese_mold;9->(block)animania:cheese_mold;9",
"animania:cheese_mold;8->(block)animania:cheese_mold;8", "animania:cheese_mold;10->(block)animania:cheese_mold;10"), (obj) -> obj instanceof String);
"animania:cheese_mold;9->(block)animania:cheese_mold;9",
"animania:cheese_mold;10->(block)animania:cheese_mold;10",
}), (obj) -> obj instanceof String ? true : false);
} }
} }
@ -446,11 +432,11 @@ public class Configs {
customPickupConditionsBlocks = s customPickupConditionsBlocks = s
.comment("Custom Pickup Conditions for Blocks") .comment("Custom Pickup Conditions for Blocks")
.defineList("custom_pickup_conditions.customPickupConditionsBlocks", Arrays.asList(new String[]{}), (obj) -> obj instanceof String ? true : false); .defineList("custom_pickup_conditions.customPickupConditionsBlocks", Collections.emptyList(), (obj) -> obj instanceof String);
customPickupConditionsEntities = s customPickupConditionsEntities = s
.comment("Custom Pickup Conditions for Entities") .comment("Custom Pickup Conditions for Entities")
.defineList("custom_pickup_conditions.customPickupConditionsEntities", Arrays.asList(new String[]{}), (obj) -> obj instanceof String ? true : false); .defineList("custom_pickup_conditions.customPickupConditionsEntities", Collections.emptyList(), (obj) -> obj instanceof String);
} }
} }

View File

@ -195,6 +195,7 @@ public class ItemEvents
public void reloadTags(TagsUpdatedEvent event) public void reloadTags(TagsUpdatedEvent event)
{ {
ListHandler.initConfigLists(); ListHandler.initConfigLists();
CustomPickupOverrideHandler.initPickupOverrides();
} }
@SubscribeEvent @SubscribeEvent

View File

@ -1,9 +1,5 @@
package tschipp.carryon.common.handler; package tschipp.carryon.common.handler;
import java.util.UUID;
import javax.annotation.Nullable;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.entity.AgeableEntity; import net.minecraft.entity.AgeableEntity;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
@ -18,14 +14,17 @@ import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.world.GameType; import net.minecraft.world.GameType;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.AttackEntityEvent;
import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.eventbus.api.Event;
import tschipp.carryon.common.config.Configs.Settings; import tschipp.carryon.common.config.Configs.Settings;
import tschipp.carryon.common.helper.CarryonGamestageHelper; import tschipp.carryon.common.helper.CarryonGamestageHelper;
import tschipp.carryon.common.item.ItemCarryonBlock; import tschipp.carryon.common.item.ItemCarryonBlock;
import tschipp.carryon.common.scripting.CarryOnOverride; import tschipp.carryon.common.scripting.CarryOnOverride;
import tschipp.carryon.common.scripting.ScriptChecker; import tschipp.carryon.common.scripting.ScriptChecker;
import javax.annotation.Nullable;
import java.util.UUID;
public class PickupHandler public class PickupHandler
{ {
@ -192,11 +191,14 @@ public class PickupHandler
} }
} }
public static class PickUpEntityEvent extends AttackEntityEvent public static class PickUpEntityEvent extends Event
{ {
public final PlayerEntity player;
public final Entity target;
public PickUpEntityEvent(PlayerEntity player, Entity target) public PickUpEntityEvent(PlayerEntity player, Entity target)
{ {
super(player, target); this.player = player;
this.target = target;
} }
} }

View File

@ -41,7 +41,6 @@ public class RegistrationHandler
MinecraftForge.EVENT_BUS.register(new ItemEvents()); MinecraftForge.EVENT_BUS.register(new ItemEvents());
MinecraftForge.EVENT_BUS.register(new ItemEntityEvents()); MinecraftForge.EVENT_BUS.register(new ItemEntityEvents());
MinecraftForge.EVENT_BUS.register(new PositionCommonEvents()); MinecraftForge.EVENT_BUS.register(new PositionCommonEvents());
MinecraftForge.EVENT_BUS.register(new IMCEvents());
} }
public static void regClientEvents() public static void regClientEvents()

View File

@ -1,12 +1,11 @@
package tschipp.carryon.common.helper; package tschipp.carryon.common.helper;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWKeyCallback;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.Cancelable; import net.minecraftforge.eventbus.api.Cancelable;
import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.Event;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWKeyCallback;
public class KeyboardCallbackWrapper public class KeyboardCallbackWrapper
{ {

View File

@ -1,12 +1,11 @@
package tschipp.carryon.common.helper; package tschipp.carryon.common.helper;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWScrollCallback;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.Cancelable; import net.minecraftforge.eventbus.api.Cancelable;
import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.Event;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWScrollCallback;
//Thanks to gigaherz for the help! //Thanks to gigaherz for the help!
public class ScrollCallbackWrapper public class ScrollCallbackWrapper

View File

@ -1,11 +1,6 @@
package tschipp.carryon.common.item; package tschipp.carryon.common.item;
import java.util.Set;
import javax.annotation.Nullable;
import com.google.common.base.CharMatcher; import com.google.common.base.CharMatcher;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
@ -42,6 +37,9 @@ import tschipp.carryon.common.event.ItemEvents;
import tschipp.carryon.common.handler.CustomPickupOverrideHandler; import tschipp.carryon.common.handler.CustomPickupOverrideHandler;
import tschipp.carryon.common.handler.ModelOverridesHandler; import tschipp.carryon.common.handler.ModelOverridesHandler;
import javax.annotation.Nullable;
import java.util.Set;
public class ItemCarryonBlock extends Item public class ItemCarryonBlock extends Item
{ {
@ -187,7 +185,11 @@ public class ItemCarryonBlock extends Item
{ {
CompoundNBT data = getTileData(stack); CompoundNBT data = getTileData(stack);
updateTileLocation(data, pos2); updateTileLocation(data, pos2);
tile.load(actualState, data); try {
tile.load(actualState, data);
}
catch (Exception e)
{}
} }
clearTileData(stack); clearTileData(stack);
player.playSound(actualState.getSoundType(world, pos2, player).getPlaceSound(), 1.0f, 0.5f); player.playSound(actualState.getSoundType(world, pos2, player).getPlaceSound(), 1.0f, 0.5f);

View File

@ -1,14 +1,14 @@
package tschipp.carryon.network.client; package tschipp.carryon.network.client;
import java.util.function.Supplier;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.network.NetworkEvent; import net.minecraftforge.fml.network.NetworkEvent;
import tschipp.carryon.CarryOn;
import tschipp.carryon.common.scripting.ScriptChecker; import tschipp.carryon.common.scripting.ScriptChecker;
import tschipp.carryon.proxy.ClientProxy;
import java.util.function.Supplier;
public class CarrySlotPacket public class CarrySlotPacket
{ {
@ -49,7 +49,7 @@ public class CarrySlotPacket
{ {
ctx.get().enqueueWork(() -> { ctx.get().enqueueWork(() -> {
World world = CarryOn.proxy.getWorld(); World world = ClientProxy.getWorld();
if (world != null) if (world != null)
{ {

View File

@ -3,35 +3,38 @@ package tschipp.carryon.proxy;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import tschipp.carryon.CarryOn;
import tschipp.carryon.client.keybinds.CarryOnKeybinds; import tschipp.carryon.client.keybinds.CarryOnKeybinds;
import tschipp.carryon.common.handler.RegistrationHandler; import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.helper.KeyboardCallbackWrapper; import tschipp.carryon.common.helper.KeyboardCallbackWrapper;
import tschipp.carryon.common.helper.ScrollCallbackWrapper; import tschipp.carryon.common.helper.ScrollCallbackWrapper;
public class ClientProxy implements IProxy {
@EventBusSubscriber(modid = CarryOn.MODID, bus = Bus.MOD, value = Dist.CLIENT)
@Override public class ClientProxy
public void setup(FMLCommonSetupEvent event) {
@SubscribeEvent
public static void setup(FMLClientSetupEvent event)
{ {
RegistrationHandler.regClientEvents(); RegistrationHandler.regClientEvents();
CarryOnKeybinds.init(); CarryOnKeybinds.init();
new ScrollCallbackWrapper().setup(Minecraft.getInstance());; new ScrollCallbackWrapper().setup(Minecraft.getInstance());
new KeyboardCallbackWrapper().setup(Minecraft.getInstance()); new KeyboardCallbackWrapper().setup(Minecraft.getInstance());
} }
@Override public static PlayerEntity getPlayer()
public PlayerEntity getPlayer()
{ {
return Minecraft.getInstance().player; return Minecraft.getInstance().player;
} }
@Override public static World getWorld()
public World getWorld()
{ {
return Minecraft.getInstance().level; return Minecraft.getInstance().level;
} }

View File

@ -1,15 +0,0 @@
package tschipp.carryon.proxy;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.world.World;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
public interface IProxy
{
public void setup(final FMLCommonSetupEvent event);
public PlayerEntity getPlayer();
public World getWorld();
}

View File

@ -1,28 +0,0 @@
package tschipp.carryon.proxy;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.world.World;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
public class ServerProxy implements IProxy
{
@Override
public void setup(FMLCommonSetupEvent event)
{
}
@Override
public PlayerEntity getPlayer()
{
return null;
}
@Override
public World getWorld()
{
return null;
}
}