Config things
This commit is contained in:
parent
f1f9d40a39
commit
be4a63f70c
6 changed files with 51 additions and 25 deletions
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -93,6 +93,14 @@ public class DimensionalDoorBlock extends DoorBlock implements RiftProvider<Entr
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) {
|
||||
super.onBreak(world, pos, state, player);
|
||||
if (state.get(HALF) == DoubleBlockHalf.LOWER) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntranceRiftBlockEntity getRift(World world, BlockPos pos, BlockState state) {
|
||||
BlockEntity bottomEntity;
|
||||
|
|
|
@ -16,6 +16,9 @@ import net.minecraft.text.MutableText;
|
|||
import net.minecraft.text.TranslatableText;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
|
||||
import org.dimdev.dimdoors.DimensionalDoorsInitializer;
|
||||
import org.dimdev.dimdoors.block.door.data.DoorData;
|
||||
import org.dimdev.dimdoors.block.entity.ModBlockEntityTypes;
|
||||
import org.dimdev.dimdoors.item.DimensionalDoorItemRegistrar;
|
||||
import org.dimdev.dimdoors.listener.BlockRegistryEntryAddedListener;
|
||||
|
@ -45,10 +48,12 @@ public class DimensionalDoorBlockRegistrar {
|
|||
}
|
||||
|
||||
public void handleEntry(Identifier identifier, Block block) {
|
||||
if (!(block instanceof DimensionalDoorBlock) && block instanceof DoorBlock) {
|
||||
register(identifier, block, AutoGenDimensionalDoorBlock::new);
|
||||
} else if (!(block instanceof DimensionalTrapdoorBlock) && block instanceof TrapdoorBlock) {
|
||||
register(identifier, block, AutoGenDimensionalTrapdoorBlock::new);
|
||||
if (DimensionalDoorsInitializer.getConfig().getDoorsConfig().isAllowed(identifier) && !DoorData.PARENT_BLOCKS.contains(block)) {
|
||||
if (!(block instanceof DimensionalDoorBlock) && block instanceof DoorBlock) {
|
||||
register(identifier, block, AutoGenDimensionalDoorBlock::new);
|
||||
} else if (!(block instanceof DimensionalTrapdoorBlock) && block instanceof TrapdoorBlock) {
|
||||
register(identifier, block, AutoGenDimensionalTrapdoorBlock::new);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,6 @@ import org.dimdev.dimdoors.block.door.DimensionalDoorBlock;
|
|||
import org.dimdev.dimdoors.block.entity.EntranceRiftBlockEntity;
|
||||
import org.dimdev.dimdoors.item.DimensionalDoorItem;
|
||||
import org.dimdev.dimdoors.item.ItemExtensions;
|
||||
import org.dimdev.dimdoors.item.ModItems;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
|
@ -28,6 +27,8 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
|||
import net.fabricmc.fabric.api.util.TriState;
|
||||
|
||||
public final class DoorData implements AutoCloseable {
|
||||
public static final List<Block> PARENT_BLOCKS = new ArrayList<>();
|
||||
public static final List<Item> PARENT_ITEMS = new ArrayList<>();
|
||||
public static final List<Block> 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<String> parent;
|
||||
private final String parent;
|
||||
private final OptionalInt maxCount;
|
||||
private final OptionalInt maxDamage;
|
||||
private final Optional<Rarity> rarity;
|
||||
private final TriState fireproof;
|
||||
|
||||
public static UnbakedItemSettings fromJson(JsonObject json) {
|
||||
Optional<String> 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> 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<String> parent, OptionalInt maxCount, OptionalInt maxDamage, Optional<Rarity> rarity, TriState fireproof) {
|
||||
public UnbakedItemSettings(String parent, OptionalInt maxCount, OptionalInt maxDamage, Optional<Rarity> 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()));
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue