From be4a63f70cab2ac1bd56615ab1fb4dd4601539a9 Mon Sep 17 00:00:00 2001 From: SD Date: Tue, 13 Apr 2021 21:02:14 +0530 Subject: [PATCH] Config things --- .../java/org/dimdev/dimdoors/ModConfig.java | 9 +++++++ .../api/rift/target/RedstoneTarget.java | 1 - .../block/door/DimensionalDoorBlock.java | 8 +++++++ .../door/DimensionalDoorBlockRegistrar.java | 13 ++++++---- .../dimdoors/block/door/data/DoorData.java | 24 +++++++++---------- .../item/DimensionalDoorItemRegistrar.java | 21 +++++++++------- 6 files changed, 51 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/dimdev/dimdoors/ModConfig.java b/src/main/java/org/dimdev/dimdoors/ModConfig.java index 869a340d..c95ad4a0 100644 --- a/src/main/java/org/dimdev/dimdoors/ModConfig.java +++ b/src/main/java/org/dimdev/dimdoors/ModConfig.java @@ -25,6 +25,8 @@ import me.sargunvohra.mcmods.autoconfig1u.util.Utils; import me.shedaniel.clothconfig2.gui.entries.SelectionListEntry; import org.jetbrains.annotations.NotNull; +import net.minecraft.util.Identifier; + import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvironmentInterface; import net.fabricmc.fabric.api.resource.ResourcePackActivationType; @@ -126,6 +128,13 @@ public final class ModConfig implements ConfigData { } } } + + public boolean isAllowed(Identifier id) { + String idStr = id.toString(); + boolean contains = doorList.doors.contains(idStr); + + return (doorList.mode == DoorList.Mode.ENABLE) == contains; + } } public static class Pockets { diff --git a/src/main/java/org/dimdev/dimdoors/api/rift/target/RedstoneTarget.java b/src/main/java/org/dimdev/dimdoors/api/rift/target/RedstoneTarget.java index 53e7fc2a..a74a3f0a 100644 --- a/src/main/java/org/dimdev/dimdoors/api/rift/target/RedstoneTarget.java +++ b/src/main/java/org/dimdev/dimdoors/api/rift/target/RedstoneTarget.java @@ -5,6 +5,5 @@ import net.minecraft.util.math.Direction; public interface RedstoneTarget extends Target { boolean addRedstonePower(Direction relativeFacing, int strength); - void subtractRedstonePower(Direction relativeFacing, int strength); } diff --git a/src/main/java/org/dimdev/dimdoors/block/door/DimensionalDoorBlock.java b/src/main/java/org/dimdev/dimdoors/block/door/DimensionalDoorBlock.java index a530498a..78febced 100644 --- a/src/main/java/org/dimdev/dimdoors/block/door/DimensionalDoorBlock.java +++ b/src/main/java/org/dimdev/dimdoors/block/door/DimensionalDoorBlock.java @@ -93,6 +93,14 @@ public class DimensionalDoorBlock extends DoorBlock implements RiftProvider PARENT_BLOCKS = new ArrayList<>(); + public static final List PARENT_ITEMS = new ArrayList<>(); public static final List DOORS = new ArrayList<>(); private final String id; private final UnbakedItemSettings itemSettings; @@ -90,12 +91,9 @@ public final class DoorData implements AutoCloseable { throw new UnsupportedOperationException("Already Closed"); } - Item.Settings itemSettings; - if (this.itemSettings.parent.isPresent()) { - itemSettings = ItemExtensions.getSettings(Registry.ITEM.get(new Identifier(this.itemSettings.parent.get()))); - } else { - itemSettings = new Item.Settings().group(ModItems.DIMENSIONAL_DOORS); - } + Item parentItem = Registry.ITEM.get(new Identifier(this.itemSettings.parent)); + PARENT_ITEMS.add(parentItem); + Item.Settings itemSettings = ItemExtensions.getSettings(parentItem); this.itemSettings.maxCount.ifPresent(itemSettings::maxCount); this.itemSettings.maxDamage.ifPresent(itemSettings::maxDamageIfAbsent); this.itemSettings.rarity.ifPresent(itemSettings::rarity); @@ -105,7 +103,9 @@ public final class DoorData implements AutoCloseable { return false; }); - FabricBlockSettings blockSettings = FabricBlockSettings.copyOf(Registry.BLOCK.get(new Identifier(this.blockSettings.parent))); + Block parentBlock = Registry.BLOCK.get(new Identifier(this.blockSettings.parent)); + PARENT_BLOCKS.add(parentBlock); + FabricBlockSettings blockSettings = FabricBlockSettings.copyOf(parentBlock); this.blockSettings.luminance.ifPresent(blockSettings::luminance); Identifier id = new Identifier(this.id); Block doorBlock = new DimensionalDoorBlock(blockSettings); @@ -124,14 +124,14 @@ public final class DoorData implements AutoCloseable { b.put(rarity.name().toLowerCase(), rarity); } }).build(); - private final Optional parent; + private final String parent; private final OptionalInt maxCount; private final OptionalInt maxDamage; private final Optional rarity; private final TriState fireproof; public static UnbakedItemSettings fromJson(JsonObject json) { - Optional parent = Optional.ofNullable(json.get("parent")).map(JsonElement::getAsString); + String parent = Optional.ofNullable(json.get("parent")).map(JsonElement::getAsString).get(); OptionalInt maxCount = Optional.ofNullable(json.get("maxCount")).map(JsonElement::getAsInt).map(OptionalInt::of).orElse(OptionalInt.empty()); OptionalInt maxDamage = Optional.ofNullable(json.get("maxDamage")).map(JsonElement::getAsInt).map(OptionalInt::of).orElse(OptionalInt.empty()); Optional rarity = Optional.ofNullable(json.get("rarity")).map(JsonElement::getAsString).map(String::toLowerCase).map(RARITIES::get).map(Objects::requireNonNull); @@ -139,7 +139,7 @@ public final class DoorData implements AutoCloseable { return new UnbakedItemSettings(parent, maxCount, maxDamage, rarity, fireproof); } - public UnbakedItemSettings(Optional parent, OptionalInt maxCount, OptionalInt maxDamage, Optional rarity, TriState fireproof) { + public UnbakedItemSettings(String parent, OptionalInt maxCount, OptionalInt maxDamage, Optional rarity, TriState fireproof) { this.parent = parent; this.maxCount = maxCount; this.maxDamage = maxDamage; @@ -148,7 +148,7 @@ public final class DoorData implements AutoCloseable { } public JsonObject toJson(JsonObject json) { - parent.ifPresent(s -> json.addProperty("parent", s)); + json.addProperty("parent", parent); maxCount.ifPresent(s -> json.addProperty("maxCount", s)); maxDamage.ifPresent(s -> json.addProperty("maxDamage", s)); rarity.ifPresent(s -> json.addProperty("rarity", s.name().toLowerCase())); diff --git a/src/main/java/org/dimdev/dimdoors/item/DimensionalDoorItemRegistrar.java b/src/main/java/org/dimdev/dimdoors/item/DimensionalDoorItemRegistrar.java index 1906db65..14380e38 100644 --- a/src/main/java/org/dimdev/dimdoors/item/DimensionalDoorItemRegistrar.java +++ b/src/main/java/org/dimdev/dimdoors/item/DimensionalDoorItemRegistrar.java @@ -15,9 +15,12 @@ import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.Pair; import net.minecraft.util.registry.Registry; + +import org.dimdev.dimdoors.DimensionalDoorsInitializer; import org.dimdev.dimdoors.api.util.function.QuadFunction; import org.dimdev.dimdoors.block.door.DimensionalDoorBlock; import org.dimdev.dimdoors.block.door.DimensionalTrapdoorBlock; +import org.dimdev.dimdoors.block.door.data.DoorData; import org.dimdev.dimdoors.block.entity.EntranceRiftBlockEntity; import org.dimdev.dimdoors.listener.ItemRegistryEntryAddedListener; import org.dimdev.dimdoors.rift.targets.PublicPocketTarget; @@ -49,15 +52,17 @@ public class DimensionalDoorItemRegistrar { } public void handleEntry(Identifier identifier, Item item) { - 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(); - if (block instanceof DoorBlock) { + if (DimensionalDoorsInitializer.getConfig().getDoorsConfig().isAllowed(identifier) && !DoorData.PARENT_ITEMS.contains(item)) { + if (item instanceof TallBlockItem) { + Block block = ((TallBlockItem) item).getBlock(); handleEntry(identifier, item, block, AutoGenDimensionalDoorItem::new); - } else { - handleEntry(identifier, item, block, AutoGenDimensionalTrapdoorItem::new); + } else if (item instanceof BlockItem) { + Block block = ((BlockItem) item).getBlock(); + if (block instanceof DoorBlock) { + handleEntry(identifier, item, block, AutoGenDimensionalDoorItem::new); + } else { + handleEntry(identifier, item, block, AutoGenDimensionalTrapdoorItem::new); + } } } }