From e1da67a2505324f685d7a83344d6364fd1945a86 Mon Sep 17 00:00:00 2001 From: Tschipp <11649893+Tschipp@users.noreply.github.com> Date: Thu, 6 Jul 2023 21:00:51 +0200 Subject: [PATCH] Fixed many bugs --- src/main/java/tschipp/carryon/CarryOn.java | 3 + .../carryon/client/event/RenderEvents.java | 3 +- .../carryon/common/config/Configs.java | 2 +- .../carryon/common/event/IMCEvents.java | 60 ++++++++++--------- .../carryon/common/handler/ListHandler.java | 17 ++++-- 5 files changed, 48 insertions(+), 37 deletions(-) diff --git a/src/main/java/tschipp/carryon/CarryOn.java b/src/main/java/tschipp/carryon/CarryOn.java index 1248cd1..d72d181 100644 --- a/src/main/java/tschipp/carryon/CarryOn.java +++ b/src/main/java/tschipp/carryon/CarryOn.java @@ -4,6 +4,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; @@ -49,6 +50,8 @@ public class CarryOn ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, Configs.SERVER_CONFIG); info = ModLoadingContext.get().getActiveContainer().getModInfo(); + + InterModComms.sendTo("carryon", "blacklistBlock", () -> "minecraft:chest"); } private void setup(final FMLCommonSetupEvent event) diff --git a/src/main/java/tschipp/carryon/client/event/RenderEvents.java b/src/main/java/tschipp/carryon/client/event/RenderEvents.java index e5c245d..2be17df 100644 --- a/src/main/java/tschipp/carryon/client/event/RenderEvents.java +++ b/src/main/java/tschipp/carryon/client/event/RenderEvents.java @@ -166,7 +166,8 @@ public class RenderEvents if (!stack.isEmpty() && (stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack) || stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))) { - Minecraft.getInstance().player.closeContainer(); + event.setCanceled(true); + //Minecraft.getInstance().player.closeContainer(); Minecraft.getInstance().screen = null; Minecraft.getInstance().mouseHandler.grabMouse(); diff --git a/src/main/java/tschipp/carryon/common/config/Configs.java b/src/main/java/tschipp/carryon/common/config/Configs.java index d662a79..a8fa1c2 100644 --- a/src/main/java/tschipp/carryon/common/config/Configs.java +++ b/src/main/java/tschipp/carryon/common/config/Configs.java @@ -203,7 +203,7 @@ public class Configs 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("#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:*", "framedblocks:*", "securitycraft:*", "forgemultipartcbe:*", "integrateddynamics:cable", - "mekanismgenerators:wind_generator"), obj -> obj instanceof String); + "mekanismgenerators:wind_generator", "vm:vending_machine"), 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:*", "securitycraft:*", "taterzens:npc", "easy_npc:*", "minecolonies:*"), obj -> obj instanceof String ? true : false); diff --git a/src/main/java/tschipp/carryon/common/event/IMCEvents.java b/src/main/java/tschipp/carryon/common/event/IMCEvents.java index 7082d86..e8c28d7 100644 --- a/src/main/java/tschipp/carryon/common/event/IMCEvents.java +++ b/src/main/java/tschipp/carryon/common/event/IMCEvents.java @@ -7,6 +7,7 @@ import net.minecraftforge.fml.InterModComms.IMCMessage; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; import tschipp.carryon.CarryOn; import tschipp.carryon.common.handler.ListHandler; import tschipp.carryon.common.handler.ModelOverridesHandler; @@ -18,43 +19,44 @@ public class IMCEvents { @SubscribeEvent(priority = EventPriority.LOW) - public static void serverLoad(FMLCommonSetupEvent event) + public static void serverLoad(InterModProcessEvent event) { Stream messages = InterModComms.getMessages(CarryOn.MODID); messages.forEach(msg -> { - String method = msg.method(); - Object obj = msg.messageSupplier().get(); + ListHandler.IMCMessages.add(() -> { + String method = msg.method(); + Object obj = msg.messageSupplier().get(); - if (!(obj instanceof String str)) - return; + if (!(obj instanceof String str)) + return; - switch (method) - { - case "blacklistBlock": - ListHandler.FORBIDDEN_TILES.add(str); - break; - case "blacklistEntity": - ListHandler.FORBIDDEN_ENTITIES.add(str); - break; - case "whitelistBlock": - ListHandler.ALLOWED_TILES.add(str); - break; - case "whitelistEntity": - ListHandler.ALLOWED_ENTITIES.add(str); - break; - case "blacklistStacking": - ListHandler.FORBIDDEN_STACKING.add(str); - break; - case "whitelistStacking": - ListHandler.ALLOWED_STACKING.add(str); - break; - case "addModelOverride": - ModelOverridesHandler.parseOverride(str, 0); - break; - } + switch (method) { + case "blacklistBlock": + ListHandler.FORBIDDEN_TILES.add(str); + break; + case "blacklistEntity": + ListHandler.FORBIDDEN_ENTITIES.add(str); + break; + case "whitelistBlock": + ListHandler.ALLOWED_TILES.add(str); + break; + case "whitelistEntity": + ListHandler.ALLOWED_ENTITIES.add(str); + break; + case "blacklistStacking": + ListHandler.FORBIDDEN_STACKING.add(str); + break; + case "whitelistStacking": + ListHandler.ALLOWED_STACKING.add(str); + break; + case "addModelOverride": + ModelOverridesHandler.parseOverride(str, 0); + break; + } + }); }); } diff --git a/src/main/java/tschipp/carryon/common/handler/ListHandler.java b/src/main/java/tschipp/carryon/common/handler/ListHandler.java index ac38cf0..f113b07 100644 --- a/src/main/java/tschipp/carryon/common/handler/ListHandler.java +++ b/src/main/java/tschipp/carryon/common/handler/ListHandler.java @@ -6,7 +6,9 @@ import net.minecraft.tags.TagKey; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.block.Block; +import net.minecraftforge.fml.InterModComms; import net.minecraftforge.registries.ForgeRegistries; +import tschipp.carryon.CarryOn; import tschipp.carryon.common.config.Configs.Blacklist; import tschipp.carryon.common.config.Configs.WhiteList; @@ -14,6 +16,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.stream.Stream; public class ListHandler { @@ -30,6 +33,7 @@ public class ListHandler public static List> ALLOWED_TILES_TAGS = new ArrayList<>(); public static List>> FORBIDDEN_STACKING_TAGS = new ArrayList<>(); public static List>> ALLOWED_STACKING_TAGS = new ArrayList<>(); + public static List IMCMessages = new ArrayList<>(); public static boolean isForbidden(Block block) { @@ -144,6 +148,11 @@ public class ListHandler } + private static void processIMC() { + for(Runnable r : IMCMessages) + r.run(); + } + @SuppressWarnings("deprecation") public static void initConfigLists() { @@ -160,9 +169,10 @@ public class ListHandler ALLOWED_TILES.clear(); ALLOWED_TILES_TAGS.clear(); + processIMC(); + List forbidden = new ArrayList<>(Blacklist.forbiddenTiles.get()); forbidden.add("#carryon:block_blacklist"); - FORBIDDEN_TILES = new ArrayList<>(); for (int i = 0; i < forbidden.size(); i++) { @@ -172,7 +182,6 @@ public class ListHandler List forbiddenEntity = new ArrayList<>(Blacklist.forbiddenEntities.get()); forbiddenEntity.add("#carryon:entity_blacklist"); - FORBIDDEN_ENTITIES = new ArrayList<>(); for (int i = 0; i < forbiddenEntity.size(); i++) { @@ -197,7 +206,6 @@ public class ListHandler List allowedEntities = new ArrayList<>(WhiteList.allowedEntities.get()); allowedEntities.add("#carryon:entity_whitelist"); - ALLOWED_ENTITIES = new ArrayList<>(); for (int i = 0; i < allowedEntities.size(); i++) { if (!allowedEntities.get(i).startsWith("#")) @@ -221,7 +229,6 @@ public class ListHandler List allowedBlocks = new ArrayList<>(WhiteList.allowedBlocks.get()); allowedBlocks.add("#carryon:block_whitelist"); - ALLOWED_TILES = new ArrayList<>(); for (int i = 0; i < allowedBlocks.size(); i++) { if (!allowedBlocks.get(i).startsWith("#")) @@ -230,7 +237,6 @@ public class ListHandler List forbiddenStacking = new ArrayList<>(Blacklist.forbiddenStacking.get()); forbiddenStacking.add("#carryon:stacking_blacklist"); - FORBIDDEN_STACKING = new ArrayList<>(); for (int i = 0; i < forbiddenStacking.size(); i++) { @@ -255,7 +261,6 @@ public class ListHandler List allowedStacking = new ArrayList<>(WhiteList.allowedStacking.get()); allowedStacking.add("#carryon:stacking_whitelist"); - ALLOWED_STACKING = new ArrayList<>(); for (int i = 0; i < allowedStacking.size(); i++) { if (!allowedStacking.get(i).startsWith("#"))