From 9fdca2fa74f3d7e558d8776c667dd6531a220516 Mon Sep 17 00:00:00 2001 From: CreepyCre Date: Sun, 11 Apr 2021 02:25:44 +0200 Subject: [PATCH] switched door class checks to instanceof --- .../door/DimensionalDoorBlockRegistrar.java | 16 ++-- .../block/door/DoorBlockClassCase.java | 35 -------- .../item/DimensionalDoorItemRegistrar.java | 85 ++++++------------- 3 files changed, 32 insertions(+), 104 deletions(-) delete mode 100644 src/main/java/org/dimdev/dimdoors/block/door/DoorBlockClassCase.java diff --git a/src/main/java/org/dimdev/dimdoors/block/door/DimensionalDoorBlockRegistrar.java b/src/main/java/org/dimdev/dimdoors/block/door/DimensionalDoorBlockRegistrar.java index 980f6856..84f2994c 100644 --- a/src/main/java/org/dimdev/dimdoors/block/door/DimensionalDoorBlockRegistrar.java +++ b/src/main/java/org/dimdev/dimdoors/block/door/DimensionalDoorBlockRegistrar.java @@ -9,6 +9,8 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; +import net.minecraft.block.DoorBlock; +import net.minecraft.block.TrapdoorBlock; import net.minecraft.client.render.RenderLayer; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; @@ -41,16 +43,10 @@ public class DimensionalDoorBlockRegistrar { } public void handleEntry(Identifier identifier, Block block) { - switch (DoorBlockClassCase.getCase(block)) { - case DOOR_BLOCK: - register(identifier, block, DimensionalDoorBlock::new); - break; - case TRAPDOOR_BLOCK: - register(identifier, block, DimensionalTrapdoorBlock::new); - break; - default: - // do nothing - break; + if (!(block instanceof DimensionalDoorBlock) && block instanceof DoorBlock) { + register(identifier, block, DimensionalDoorBlock::new); + } else if (!(block instanceof DimensionalTrapdoorBlock) && block instanceof TrapdoorBlock) { + register(identifier, block, DimensionalTrapdoorBlock::new); } } diff --git a/src/main/java/org/dimdev/dimdoors/block/door/DoorBlockClassCase.java b/src/main/java/org/dimdev/dimdoors/block/door/DoorBlockClassCase.java deleted file mode 100644 index 4fccdebf..00000000 --- a/src/main/java/org/dimdev/dimdoors/block/door/DoorBlockClassCase.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.dimdev.dimdoors.block.door; - -import net.minecraft.block.Block; -import net.minecraft.block.DoorBlock; -import net.minecraft.block.TrapdoorBlock; - -import java.util.HashMap; -import java.util.Map; - -// Just in case we want to support more Door classes in the future. -// Need to move away from an enum for better mod support though. -public enum DoorBlockClassCase { - NONE(null), - DOOR_BLOCK(DoorBlock.class), - TRAPDOOR_BLOCK(TrapdoorBlock.class); - - private static final Map, DoorBlockClassCase> CASE_MAP = new HashMap<>(); - - static { - for (DoorBlockClassCase doorBlockClassCase : DoorBlockClassCase.values()) { - CASE_MAP.put(doorBlockClassCase.doorClazz, doorBlockClassCase); - } - } - - public static DoorBlockClassCase getCase(Block block) { - DoorBlockClassCase doorBlockClassCase = CASE_MAP.get(block.getClass()); - return doorBlockClassCase == null ? NONE : doorBlockClassCase; - } - - private final Class doorClazz; - - DoorBlockClassCase(Class doorClazz) { - this.doorClazz = doorClazz; - } -} diff --git a/src/main/java/org/dimdev/dimdoors/item/DimensionalDoorItemRegistrar.java b/src/main/java/org/dimdev/dimdoors/item/DimensionalDoorItemRegistrar.java index add8fc9b..398a63f5 100644 --- a/src/main/java/org/dimdev/dimdoors/item/DimensionalDoorItemRegistrar.java +++ b/src/main/java/org/dimdev/dimdoors/item/DimensionalDoorItemRegistrar.java @@ -3,6 +3,8 @@ package org.dimdev.dimdoors.item; import net.fabricmc.fabric.api.event.registry.RegistryEntryAddedCallback; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.minecraft.block.Block; +import net.minecraft.block.DoorBlock; +import net.minecraft.block.TrapdoorBlock; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -13,7 +15,8 @@ import net.minecraft.util.Identifier; import net.minecraft.util.Pair; import net.minecraft.util.registry.Registry; import org.dimdev.dimdoors.api.util.QuadFunction; -import org.dimdev.dimdoors.block.door.DoorBlockClassCase; +import org.dimdev.dimdoors.block.door.DimensionalDoorBlock; +import org.dimdev.dimdoors.block.door.DimensionalTrapdoorBlock; import org.dimdev.dimdoors.block.entity.EntranceRiftBlockEntity; import org.dimdev.dimdoors.listener.ItemRegistryEntryAddedListener; import org.dimdev.dimdoors.rift.targets.PublicPocketTarget; @@ -45,45 +48,35 @@ public class DimensionalDoorItemRegistrar { } public void handleEntry(Identifier identifier, Item item) { - Block block; - switch (DoorItemClassCase.getCase(item)) { - case TALL_BLOCK_ITEM: - block = ((TallBlockItem) item).getBlock(); - handleEntry(identifier, item, block, AutoGenDimensionalDoorItem::new); - break; - case BLOCK_ITEM: - block = ((BlockItem) item).getBlock(); - handleEntry(identifier, item, block, AutoGenDimensionalTrapdoorItem::new); - break; - default: - // do nothing - break; + if (item instanceof TallBlockItem) { + Block block = ((TallBlockItem) item).getBlock(); + handleEntry(identifier, item, block, AutoGenDimensionalDoorItem::new); + } else if (item instanceof BlockItem) { + Block block = ((BlockItem) item).getBlock(); + handleEntry(identifier, item, block, AutoGenDimensionalTrapdoorItem::new); } } private void handleEntry(Identifier identifier, Item item, Block block, QuadFunction, Item, ? extends Item> constructor) { - switch (DoorBlockClassCase.getCase(block)) { - case DOOR_BLOCK: - case TRAPDOOR_BLOCK: - Item.Settings settings = new FabricItemSettings() - .maxCount(item.getMaxCount()) - .maxDamage(item.getMaxDamage()) - .recipeRemainder(item.getRecipeRemainder()) - .group(ModItems.DIMENSIONAL_DOORS); - if (item.isFireproof()) settings.fireproof(); - Function dimItemConstructor = (dimBlock) -> constructor.apply(dimBlock, settings, rift -> rift.setDestination(new PublicPocketTarget()), item); + if (!(block instanceof DimensionalDoorBlock) + && !(block instanceof DimensionalTrapdoorBlock) + && (block instanceof DoorBlock || block instanceof TrapdoorBlock)) { + Item.Settings settings = new FabricItemSettings() + .maxCount(item.getMaxCount()) + .maxDamage(item.getMaxDamage()) + .recipeRemainder(item.getRecipeRemainder()) + .group(ModItems.DIMENSIONAL_DOORS); + if (item.isFireproof()) settings.fireproof(); - if (!blocksAlreadyNotifiedAbout.containsKey(block)) { - toBeMapped.put(block, new Pair<>(identifier, dimItemConstructor)); - return; - } + Function dimItemConstructor = (dimBlock) -> constructor.apply(dimBlock, settings, rift -> rift.setDestination(new PublicPocketTarget()), item); - register(identifier, dimItemConstructor.apply(blocksAlreadyNotifiedAbout.get(block))); - break; - default: - // do nothing - break; + if (!blocksAlreadyNotifiedAbout.containsKey(block)) { + toBeMapped.put(block, new Pair<>(identifier, dimItemConstructor)); + return; + } + + register(identifier, dimItemConstructor.apply(blocksAlreadyNotifiedAbout.get(block))); } } @@ -106,32 +99,6 @@ public class DimensionalDoorItemRegistrar { } - - private enum DoorItemClassCase { - NONE(null), - TALL_BLOCK_ITEM(TallBlockItem.class), - BLOCK_ITEM(BlockItem.class); - - private static final Map, DoorItemClassCase> CASE_MAP = new HashMap<>(); - - static { - for (DoorItemClassCase doorItemClassCase : DoorItemClassCase.values()) { - CASE_MAP.put(doorItemClassCase.doorClazz, doorItemClassCase); - } - } - - public static DoorItemClassCase getCase(Item item) { - DoorItemClassCase doorItemClassCase = CASE_MAP.get(item.getClass()); - return doorItemClassCase == null ? NONE : doorItemClassCase; - } - - private final Class doorClazz; - - DoorItemClassCase(Class doorClazz) { - this.doorClazz = doorClazz; - } - } - private static class AutoGenDimensionalDoorItem extends DimensionalDoorItem { private final Item originalItem;