From 9091b77aa3f19327638be5357ed6065198ee4e79 Mon Sep 17 00:00:00 2001 From: Waterpicker Date: Sun, 13 Aug 2023 01:30:13 -0500 Subject: [PATCH] Added Leak properly, completed implmenting assets for blocks and items (along with all lang entries), Added black/whitelist for what worlds will cause you to go to limbo upon eath, and REI foudnation. --- common/build.gradle.kts | 3 + .../org/dimdev/dimdoors/DimensionalDoors.java | 11 ++-- .../java/org/dimdev/dimdoors/ModConfig.java | 41 +++++++++++--- .../org/dimdev/dimdoors/block/ModBlocks.java | 11 ++-- .../dimdoors/block/RealitySpongeBlock.java | 5 +- .../dimdoors/block/UnravelledFabricBlock.java | 4 +- .../client/DimensionalDoorsClient.java | 51 ++++++++++++++++- .../org/dimdev/dimdoors/fluid/ModFluids.java | 6 ++ .../org/dimdev/dimdoors/item/ModItems.java | 1 + .../dimdoors/mixin/PlayerEntityMixin.java | 2 +- .../dimdoors/mixin/ServerWorldMixin.java | 4 +- .../decay/{LimboDecay.java => Decay.java} | 10 ++-- .../blockstates/dimensional_portal.json | 8 +-- .../dimdoors/blockstates/eternal_fluid.json | 32 +++++------ .../assets/dimdoors/blockstates/leak.json | 52 ++++++++++++++++++ .../resources/assets/dimdoors/lang/en_us.json | 18 +++++- .../dimdoors/models/block/detached_rift.json | 7 +++ .../dimdoors/models/item/leak_bucket.json | 6 ++ .../dimdoors/models/item/unraveled_spike.json | 6 ++ .../textures/block/leak_flow.png.mcmeta | 0 .../dimdoors/textures/item/dimdoor_back.png | Bin 5460 -> 3988 bytes .../textures/item/dimdoor_back.png.mcmeta | 3 + .../dimdoors/textures/item/leak_bucket.png | Bin 0 -> 322 bytes .../data/dimdoors/door/data/iron_door.json | 12 ---- .../recipes/wood_dimensional_trapdoor.json | 19 ------- fabric/build.gradle | 14 ++++- .../dimdoors/datagen/DatagenInitializer.java | 2 +- ...ovider.java => DimDoorsModelProvider.java} | 12 ++-- .../dimdev/dimdoors/compat/ModMenuCompat.java | 11 ++++ fabric/src/main/resources/fabric.mod.json | 3 +- forge/build.gradle | 4 ++ .../dimdoors/DimensionalDoorsForge.java | 11 +++- gradle.properties | 4 +- .../dimdoors/blockstates/detached_rift.json | 5 -- settings.gradle.kts | 2 +- 35 files changed, 279 insertions(+), 101 deletions(-) rename common/src/main/java/org/dimdev/dimdoors/world/decay/{LimboDecay.java => Decay.java} (94%) create mode 100644 common/src/main/resources/assets/dimdoors/blockstates/leak.json create mode 100644 common/src/main/resources/assets/dimdoors/models/block/detached_rift.json create mode 100644 common/src/main/resources/assets/dimdoors/models/item/leak_bucket.json create mode 100644 common/src/main/resources/assets/dimdoors/models/item/unraveled_spike.json rename original/src/main/resources/assets/dimdoors/textures/block/leak_still.png - Copy.mcmeta => common/src/main/resources/assets/dimdoors/textures/block/leak_flow.png.mcmeta (100%) create mode 100644 common/src/main/resources/assets/dimdoors/textures/item/dimdoor_back.png.mcmeta create mode 100644 common/src/main/resources/assets/dimdoors/textures/item/leak_bucket.png delete mode 100644 common/src/main/resources/data/dimdoors/door/data/iron_door.json delete mode 100644 common/src/main/resources/data/dimdoors/recipes/wood_dimensional_trapdoor.json rename fabric/src/main/datagen/org/dimdev/dimdoors/datagen/{BlockStateProvider.java => DimDoorsModelProvider.java} (96%) create mode 100644 fabric/src/main/java/org/dimdev/dimdoors/compat/ModMenuCompat.java delete mode 100644 original/src/main/resources/assets/dimdoors/blockstates/detached_rift.json diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 843604b0..dc2c5f9d 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -19,6 +19,9 @@ dependencies { modApi("com.github.DimensionalDevelopment:poly2tri.java:0.1.1") modApi("com.sk89q.worldedit:worldedit-core:${project.properties["worldedit"]}") + + modCompileOnly("me.shedaniel:RoughlyEnoughItems-api:${project.properties["rei_version"]}") + modCompileOnly("me.shedaniel:RoughlyEnoughItems-default-plugin:${project.properties["rei_version"]}") } sourceSets.main { diff --git a/common/src/main/java/org/dimdev/dimdoors/DimensionalDoors.java b/common/src/main/java/org/dimdev/dimdoors/DimensionalDoors.java index 3d4a184f..b9e89deb 100644 --- a/common/src/main/java/org/dimdev/dimdoors/DimensionalDoors.java +++ b/common/src/main/java/org/dimdev/dimdoors/DimensionalDoors.java @@ -1,7 +1,6 @@ package org.dimdev.dimdoors; import dev.architectury.event.events.client.ClientPlayerEvent; -import dev.architectury.event.events.common.ChunkEvent; import dev.architectury.event.events.common.InteractionEvent; import dev.architectury.injectables.annotations.ExpectPlatform; import dev.architectury.networking.NetworkChannel; @@ -60,7 +59,7 @@ import org.dimdev.dimdoors.world.ModBiomes; import org.dimdev.dimdoors.world.ModDimensions; import org.dimdev.dimdoors.world.decay.DecayPredicate; import org.dimdev.dimdoors.world.decay.DecayProcessor; -import org.dimdev.dimdoors.world.decay.LimboDecay; +import org.dimdev.dimdoors.world.decay.Decay; import org.dimdev.dimdoors.world.feature.ModFeatures; import org.dimdev.dimdoors.world.pocket.type.AbstractPocket; import org.dimdev.dimdoors.world.pocket.type.addon.PocketAddon; @@ -104,8 +103,6 @@ public class DimensionalDoors { public static void init() { dimDoorsMod = Platform.getMod(MOD_ID); - dimDoorsMod.registerConfigurationScreen(ModMenu::getConfigScreen); //TODO: Move to client. - registerRegistries(); ModRecipeTypes.init(); @@ -134,7 +131,7 @@ public class DimensionalDoors { initBuiltinPacks(); ReloadListenerRegistry.register(PackType.SERVER_DATA, PocketLoader.getInstance()); - ReloadListenerRegistry.register(PackType.SERVER_DATA, LimboDecay.DecayLoader.getInstance()); + ReloadListenerRegistry.register(PackType.SERVER_DATA, Decay.DecayLoader.getInstance()); ReloadListenerRegistry.register(PackType.SERVER_DATA, DoorRiftDataLoader.getInstance()); @@ -188,4 +185,8 @@ public class DimensionalDoors { public static DimensionalDoorBlockRegistrar getDimensionalDoorBlockRegistrar() { return dimensionalDoorBlockRegistrar; } + + public static Mod getDimDoorsMod() { + return dimDoorsMod; + } } diff --git a/common/src/main/java/org/dimdev/dimdoors/ModConfig.java b/common/src/main/java/org/dimdev/dimdoors/ModConfig.java index 6e389974..819175e5 100644 --- a/common/src/main/java/org/dimdev/dimdoors/ModConfig.java +++ b/common/src/main/java/org/dimdev/dimdoors/ModConfig.java @@ -8,17 +8,16 @@ import me.shedaniel.cloth.clothconfig.shadowed.blue.endless.jankson.Jankson; import me.shedaniel.clothconfig2.gui.entries.SelectionListEntry; import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvironmentInterface; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; import java.io.BufferedWriter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; +import java.util.*; import static me.shedaniel.autoconfig.annotation.ConfigEntry.Category; import static me.shedaniel.autoconfig.annotation.ConfigEntry.Gui.*; @@ -51,6 +50,10 @@ public final class ModConfig implements ConfigData { @Category("doors") private Doors doors = new Doors(); + @TransitiveObject + @Category("decay") + private Decay decay = new Decay(); + public General getGeneralConfig() { return this.general; } @@ -83,6 +86,10 @@ public final class ModConfig implements ConfigData { return this.doors; } + public Decay getDecayConfig() { + return decay; + } + public static class General { @Tooltip public double teleportOffset = 0; @Tooltip public boolean riftBoundingBoxInCreative; @@ -160,11 +167,31 @@ public final class ModConfig implements ConfigData { } public static class Limbo { - @Tooltip public boolean universalLimbo = false; + + @CollapsibleObject + @RequiresRestart + @Tooltip private WorldList worldsLeadingToLimbo = new WorldList(List.of(), true); @Tooltip public boolean hardcoreLimbo = false; - @Tooltip public double decaySpreadChance = 1.0; - @Tooltip public int limboDecay = 40; @Tooltip public float limboBlocksCorruptingOverworldAmount = 5; + public boolean shouldUseLimbo(ResourceKey level) { + return worldsLeadingToLimbo.blacklist != worldsLeadingToLimbo.list.contains(level.location().toString()); + } + + public static final class WorldList { + @Tooltip public List list; + @Tooltip public boolean blacklist; + + public WorldList(List list, boolean blacklist) { + this.list = list; + this.blacklist = blacklist; + } + } + } + + public static class Decay { + @Tooltip public double decaySpreadChance = 1.0; + + @Tooltip public int decayDelay = 40; } public static class Graphics { diff --git a/common/src/main/java/org/dimdev/dimdoors/block/ModBlocks.java b/common/src/main/java/org/dimdev/dimdoors/block/ModBlocks.java index aea06653..488e220d 100644 --- a/common/src/main/java/org/dimdev/dimdoors/block/ModBlocks.java +++ b/common/src/main/java/org/dimdev/dimdoors/block/ModBlocks.java @@ -1,5 +1,6 @@ package org.dimdev.dimdoors.block; +import dev.architectury.core.block.ArchitecturyLiquidBlock; import dev.architectury.registry.client.rendering.RenderTypeRegistry; import dev.architectury.registry.registries.DeferredRegister; import dev.architectury.registry.registries.RegistrySupplier; @@ -19,6 +20,7 @@ import net.minecraft.world.level.material.MaterialColor; import org.dimdev.dimdoors.DimensionalDoors; import org.dimdev.dimdoors.block.door.DimensionalDoorBlock; import org.dimdev.dimdoors.block.door.DimensionalTrapdoorBlock; +import org.dimdev.dimdoors.fluid.ModFluids; import java.util.HashMap; import java.util.Map; @@ -115,9 +117,9 @@ public final class ModBlocks { public static final RegistrySupplier BLACK_ANCIENT_FABRIC = registerAncientFabric(DyeColor.BLACK); private static final BlockBehaviour.Properties UNRAVELLED_FABRIC_BLOCK_SETTINGS = of(Material.STONE, MaterialColor.COLOR_BLACK).randomTicks().lightLevel(state -> 15).strength(0.3F, 0.3F); - public static final RegistrySupplier ETERNAL_FLUID = register("eternal_fluid", () -> { - return new EternalFluidBlock(of(Material.LAVA, MaterialColor.COLOR_RED).lightLevel(state -> 15)); - }); + public static final RegistrySupplier ETERNAL_FLUID = registerWithoutTab("eternal_fluid", () -> new EternalFluidBlock(of(Material.LAVA, MaterialColor.COLOR_RED).lightLevel(state -> 15))); + + public static final RegistrySupplier LEAK = registerWithoutTab("leak", () -> new ArchitecturyLiquidBlock(ModFluids.LEAK, of(WATER))); public static final RegistrySupplier DECAYED_BLOCK = registerWithoutTab("decayed_block", () -> new UnravelledFabricBlock(UNRAVELLED_FABRIC_BLOCK_SETTINGS)); @@ -218,14 +220,13 @@ public final class ModBlocks { public static final RegistrySupplier UNRAVELED_SPIKE = register("unraveled_spike", () -> new PointedDripstoneBlock(of(UNRAVELLED_FABRIC.get()).lightLevel(state -> 0))); //TODO: make this proper class later public static final RegistrySupplier GRITTY_STONE = register("gritty_stone", () -> new Block(of(STONE))); - public static final RegistrySupplier LEAK = register("leak", () -> new Block(of(WATER))); public static void init() { BLOCKS.register(); BLOCK_ITEMS.register(); } - private static RegistrySupplier registerWithoutTab(String name, Supplier block) { + private static RegistrySupplier registerWithoutTab(String name, Supplier block) { return BLOCKS.register(name, block); } diff --git a/common/src/main/java/org/dimdev/dimdoors/block/RealitySpongeBlock.java b/common/src/main/java/org/dimdev/dimdoors/block/RealitySpongeBlock.java index 3f7465c5..8e30c323 100644 --- a/common/src/main/java/org/dimdev/dimdoors/block/RealitySpongeBlock.java +++ b/common/src/main/java/org/dimdev/dimdoors/block/RealitySpongeBlock.java @@ -6,7 +6,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import org.dimdev.dimdoors.world.decay.LimboDecay; +import org.dimdev.dimdoors.world.decay.Decay; public class RealitySpongeBlock extends Block { @@ -20,8 +20,7 @@ public class RealitySpongeBlock extends Block { BlockPos currentPos = pos.relative(direction); if(!world.isEmptyBlock(currentPos)) { - System.out.println("Decaying."); - LimboDecay.decayBlock(world, currentPos, state); + Decay.decayBlock(world, currentPos, state); } } } diff --git a/common/src/main/java/org/dimdev/dimdoors/block/UnravelledFabricBlock.java b/common/src/main/java/org/dimdev/dimdoors/block/UnravelledFabricBlock.java index 87737ddd..4c04984b 100644 --- a/common/src/main/java/org/dimdev/dimdoors/block/UnravelledFabricBlock.java +++ b/common/src/main/java/org/dimdev/dimdoors/block/UnravelledFabricBlock.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import org.dimdev.dimdoors.world.ModDimensions; -import org.dimdev.dimdoors.world.decay.LimboDecay; +import org.dimdev.dimdoors.world.decay.Decay; public class UnravelledFabricBlock extends Block { public static final String ID = "unravelled_fabric"; @@ -19,7 +19,7 @@ public class UnravelledFabricBlock extends Block { @Override public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { if (ModDimensions.isLimboDimension(world)) { - LimboDecay.applySpreadDecay(world, pos); + Decay.applySpreadDecay(world, pos); } } } diff --git a/common/src/main/java/org/dimdev/dimdoors/client/DimensionalDoorsClient.java b/common/src/main/java/org/dimdev/dimdoors/client/DimensionalDoorsClient.java index 95a35b10..58f32a34 100644 --- a/common/src/main/java/org/dimdev/dimdoors/client/DimensionalDoorsClient.java +++ b/common/src/main/java/org/dimdev/dimdoors/client/DimensionalDoorsClient.java @@ -3,11 +3,22 @@ package org.dimdev.dimdoors.client; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import dev.architectury.event.events.client.ClientReloadShadersEvent; import dev.architectury.registry.menu.MenuRegistry; +import me.shedaniel.autoconfig.AutoConfig; +import me.shedaniel.autoconfig.gui.registry.GuiRegistry; +import me.shedaniel.autoconfig.gui.registry.api.GuiProvider; +import me.shedaniel.autoconfig.gui.registry.api.GuiRegistryAccess; +import me.shedaniel.autoconfig.util.Utils; +import me.shedaniel.clothconfig2.api.AbstractConfigListEntry; +import me.shedaniel.clothconfig2.api.ConfigEntryBuilder; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.ShaderInstance; +import net.minecraft.network.chat.Component; +import org.dimdev.dimdoors.DimensionalDoors; +import org.dimdev.dimdoors.ModConfig; import org.dimdev.dimdoors.block.ModBlocks; import org.dimdev.dimdoors.block.entity.ModBlockEntityTypes; +import org.dimdev.dimdoors.client.config.ModMenu; import org.dimdev.dimdoors.client.screen.TesselatingLoomScreen; import org.dimdev.dimdoors.entity.ModEntityTypes; import org.dimdev.dimdoors.network.client.ClientPacketHandler; @@ -15,10 +26,22 @@ import org.dimdev.dimdoors.particle.ModParticleTypes; import org.dimdev.dimdoors.screen.ModScreenHandlerTypes; import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Environment(EnvType.CLIENT) public class DimensionalDoorsClient { - public static void init() { + private static final ConfigEntryBuilder ENTRY_BUILDER = ConfigEntryBuilder.create(); + + public static void init() { MenuRegistry.registerScreenFactory(ModScreenHandlerTypes.TESSELATING_LOOM.get(), TesselatingLoomScreen::new); ModEntityTypes.initClient(); // ModFluids.initClient(); @@ -26,6 +49,10 @@ public class DimensionalDoorsClient { ModBlocks.initClient(); ModEntityModelLayers.initClient(); + AutoConfig.getGuiRegistry(ModConfig.class).registerPredicateProvider((i18n, field, config, defaults, registry) -> Collections.singletonList(ENTRY_BUILDER + .startStrList(Component.translatable(i18n), ((Set) Utils.getUnsafely(field, config, defaults)).stream().toList()) + .setSaveConsumer(newValue -> Utils.setUnsafely(field, config, newValue.stream().collect(Collectors.toSet()))).build()), isSetOfType(String.class)); + // DimensionRenderering.initClient(); registerListeners(); @@ -33,6 +60,28 @@ public class DimensionalDoorsClient { ClientPacketHandler.init(); } + private static Predicate isListOfType(Type... types) { + return field -> { + if (List.class.isAssignableFrom(field.getType()) && field.getGenericType() instanceof ParameterizedType) { + Type[] args = ((ParameterizedType) field.getGenericType()).getActualTypeArguments(); + return args.length == 1 && Stream.of(types).anyMatch(type -> Objects.equals(args[0], type)); + } else { + return false; + } + }; + } + + private static Predicate isSetOfType(Type... types) { + return field -> { + if (Set.class.isAssignableFrom(field.getType()) && field.getGenericType() instanceof ParameterizedType) { + Type[] args = ((ParameterizedType) field.getGenericType()).getActualTypeArguments(); + return args.length == 1 && Stream.of(types).anyMatch(type -> Objects.equals(args[0], type)); + } else { + return false; + } + }; + } + private static void registerListeners() { ClientReloadShadersEvent.EVENT.register((provider, sink) -> { try { diff --git a/common/src/main/java/org/dimdev/dimdoors/fluid/ModFluids.java b/common/src/main/java/org/dimdev/dimdoors/fluid/ModFluids.java index 8b0fe3b9..f55dab34 100644 --- a/common/src/main/java/org/dimdev/dimdoors/fluid/ModFluids.java +++ b/common/src/main/java/org/dimdev/dimdoors/fluid/ModFluids.java @@ -23,6 +23,12 @@ public class ModFluids { public static final RegistrySupplier FLOWING_ETERNAL_FLUID = register("flowing_eternal_fluid", () -> new ArchitecturyFlowingFluid.Flowing(ModFluids.ETERNAL_FLUID_ATTRIBUTES)); public static final RegistrySupplier ETERNAL_FLUID = register("eternal_fluid", () -> new ArchitecturyFlowingFluid.Source(ModFluids.ETERNAL_FLUID_ATTRIBUTES)); + public static final ArchitecturyFluidAttributes LEAK_ATTRIBUTES = SimpleArchitecturyFluidAttributes.ofSupplier(() -> ModFluids.FLOWING_LEAK, () -> ModFluids.LEAK).block(ModBlocks.LEAK).bucketItem(ModItems.LEAK_BUCKET) + .sourceTexture(DimensionalDoors.id("block/leak_still")) + .flowingTexture(DimensionalDoors.id("block/leak_flow")); + public static final RegistrySupplier FLOWING_LEAK = register("flowing_leak_fluid", () -> new ArchitecturyFlowingFluid.Flowing(ModFluids.LEAK_ATTRIBUTES)); + public static final RegistrySupplier LEAK = register("leak", () -> new ArchitecturyFlowingFluid.Source(ModFluids.LEAK_ATTRIBUTES)); + private static RegistrySupplier register(String string, Supplier fluid) { return FLUIDS.register(DimensionalDoors.id(string), fluid); } diff --git a/common/src/main/java/org/dimdev/dimdoors/item/ModItems.java b/common/src/main/java/org/dimdev/dimdoors/item/ModItems.java index 0db359c8..ba9378e3 100644 --- a/common/src/main/java/org/dimdev/dimdoors/item/ModItems.java +++ b/common/src/main/java/org/dimdev/dimdoors/item/ModItems.java @@ -90,6 +90,7 @@ public final class ModItems { public static final RegistrySupplier WHITE_VOID_RECORD = register("white_void_record", properties -> new ArchitecturyRecordItem(10, ModSoundEvents.WHITE_VOID, properties, 225)); public static final RegistrySupplier ETERNAL_FLUID_BUCKET = register("eternal_fluid_bucket", properties -> new ArchitecturyBucketItem(ModFluids.ETERNAL_FLUID, properties.craftRemainder(Items.BUCKET).stacksTo(1))); + public static final RegistrySupplier LEAK_BUCKET = register("leak_bucket", properties -> new ArchitecturyBucketItem(ModFluids.LEAK, properties.craftRemainder(Items.BUCKET).stacksTo(1))); public static final RegistrySupplier MASK_SHARD = register("mask_shard", Item::new); diff --git a/common/src/main/java/org/dimdev/dimdoors/mixin/PlayerEntityMixin.java b/common/src/main/java/org/dimdev/dimdoors/mixin/PlayerEntityMixin.java index 45625126..1fecc63c 100644 --- a/common/src/main/java/org/dimdev/dimdoors/mixin/PlayerEntityMixin.java +++ b/common/src/main/java/org/dimdev/dimdoors/mixin/PlayerEntityMixin.java @@ -42,7 +42,7 @@ public abstract class PlayerEntityMixin extends LivingEntity { @Unique protected void doOnDeathStuff(DamageSource source, CallbackInfo ci) { - if (ModDimensions.isPocketDimension(this.level) || DimensionalDoors.getConfig().getLimboConfig().universalLimbo) { + if (ModDimensions.isPocketDimension(this.level) || DimensionalDoors.getConfig().getLimboConfig().shouldUseLimbo(this.level.dimension())) { ((EntityAccessor) this).setRemovalReason(null); this.dead = false; this.setHealth(this.getMaxHealth()); diff --git a/common/src/main/java/org/dimdev/dimdoors/mixin/ServerWorldMixin.java b/common/src/main/java/org/dimdev/dimdoors/mixin/ServerWorldMixin.java index 2ea093f1..3daf2e7d 100644 --- a/common/src/main/java/org/dimdev/dimdoors/mixin/ServerWorldMixin.java +++ b/common/src/main/java/org/dimdev/dimdoors/mixin/ServerWorldMixin.java @@ -1,7 +1,7 @@ package org.dimdev.dimdoors.mixin; import net.minecraft.server.level.ServerLevel; -import org.dimdev.dimdoors.world.decay.LimboDecay; +import org.dimdev.dimdoors.world.decay.Decay; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -14,6 +14,6 @@ public abstract class ServerWorldMixin { @Inject(method = "tick(Ljava/util/function/BooleanSupplier;)V", at = @At(target = "Lnet/minecraft/server/level/ServerLevel;fluidTicks:Lnet/minecraft/world/ticks/LevelTicks;", value = "FIELD", ordinal = 0, shift = At.Shift.AFTER)) public void afterScheduledTick(BooleanSupplier shouldKeepTicking, CallbackInfo ci) { - LimboDecay.tick((ServerLevel) (Object) this); + Decay.tick((ServerLevel) (Object) this); } } diff --git a/common/src/main/java/org/dimdev/dimdoors/world/decay/LimboDecay.java b/common/src/main/java/org/dimdev/dimdoors/world/decay/Decay.java similarity index 94% rename from common/src/main/java/org/dimdev/dimdoors/world/decay/LimboDecay.java rename to common/src/main/java/org/dimdev/dimdoors/world/decay/Decay.java index bf20154b..c7215e06 100644 --- a/common/src/main/java/org/dimdev/dimdoors/world/decay/LimboDecay.java +++ b/common/src/main/java/org/dimdev/dimdoors/world/decay/Decay.java @@ -30,10 +30,10 @@ import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; /** - * Provides methods for applying Limbo decay. Limbo decay refers to the effect that most blocks placed in Limbo - * naturally change into stone, then cobble, then gravel, and finally Unraveled Fabric as time passes. + * Provides methods for applying decay. Decay refers to the effect that most blocks placed next to certain blocks like unraveled fabric + * change into simpler forms ultimately becoming in most cases unraveled Fabric as time passes. */ -public final class LimboDecay { +public final class Decay { private static final Logger LOGGER = LogManager.getLogger(); private static final Map, Set> DECAY_QUEUE = new HashMap<>(); @@ -46,7 +46,7 @@ public final class LimboDecay { public static void applySpreadDecay(ServerLevel world, BlockPos pos) { //Check if we randomly apply decay spread or not. This can be used to moderate the frequency of //full spread decay checks, which can also shift its performance impact on the game. - if (RANDOM.nextDouble() < DimensionalDoors.getConfig().getLimboConfig().decaySpreadChance) { + if (RANDOM.nextDouble() < DimensionalDoors.getConfig().getDecayConfig().decaySpreadChance) { BlockState origin = world.getBlockState(pos); //Apply decay to the blocks above, below, and on all four sides. @@ -83,7 +83,7 @@ public final class LimboDecay { ExtendedServerPlayNetworkHandler.get(player.connection).getDimDoorsPacketHandler().sendPacket(new RenderBreakBlockS2CPacket(pos, 5)); }); world.playSound(null, pos.getX(), pos.getY(), pos.getZ(), ModSoundEvents.TEARING.get(), SoundSource.BLOCKS, 0.5f, 1f); - queueDecay(world, pos, origin, pattern, DimensionalDoors.getConfig().getLimboConfig().limboDecay); + queueDecay(world, pos, origin, pattern, DimensionalDoors.getConfig().getDecayConfig().decayDelay); break; } } diff --git a/common/src/main/resources/assets/dimdoors/blockstates/dimensional_portal.json b/common/src/main/resources/assets/dimdoors/blockstates/dimensional_portal.json index 79766386..5e7c5386 100644 --- a/common/src/main/resources/assets/dimdoors/blockstates/dimensional_portal.json +++ b/common/src/main/resources/assets/dimdoors/blockstates/dimensional_portal.json @@ -1,8 +1,8 @@ { "variants": { - "facing=east": { "model": "dimdoors:block/no_texture" }, - "facing=west": { "model": "dimdoors:block/no_texture" }, - "facing=south": { "model": "dimdoors:block/no_texture" }, - "facing=north": { "model": "dimdoors:block/no_texture" } + "facing=east": { "model": "minecraft:block/air" }, + "facing=west": { "model": "minecraft:block/air" }, + "facing=south": { "model": "minecraft:block/air" }, + "facing=north": { "model": "minecraft:block/air" } } } diff --git a/common/src/main/resources/assets/dimdoors/blockstates/eternal_fluid.json b/common/src/main/resources/assets/dimdoors/blockstates/eternal_fluid.json index c9d960ee..0346111d 100644 --- a/common/src/main/resources/assets/dimdoors/blockstates/eternal_fluid.json +++ b/common/src/main/resources/assets/dimdoors/blockstates/eternal_fluid.json @@ -1,20 +1,20 @@ { "variants": { - "level=0": { "model": "dimdoors:block/no_texture" }, - "level=1": { "model": "dimdoors:block/no_texture" }, - "level=2": { "model": "dimdoors:block/no_texture" }, - "level=3": { "model": "dimdoors:block/no_texture" }, - "level=4": { "model": "dimdoors:block/no_texture" }, - "level=5": { "model": "dimdoors:block/no_texture" }, - "level=6": { "model": "dimdoors:block/no_texture" }, - "level=7": { "model": "dimdoors:block/no_texture" }, - "level=8": { "model": "dimdoors:block/no_texture" }, - "level=9": { "model": "dimdoors:block/no_texture" }, - "level=10": { "model": "dimdoors:block/no_texture" }, - "level=11": { "model": "dimdoors:block/no_texture" }, - "level=12": { "model": "dimdoors:block/no_texture" }, - "level=13": { "model": "dimdoors:block/no_texture" }, - "level=14": { "model": "dimdoors:block/no_texture" }, - "level=15": { "model": "dimdoors:block/no_texture" } + "level=0": { "model": "minecraft:block/air" }, + "level=1": { "model": "minecraft:block/air" }, + "level=2": { "model": "minecraft:block/air" }, + "level=3": { "model": "minecraft:block/air" }, + "level=4": { "model": "minecraft:block/air" }, + "level=5": { "model": "minecraft:block/air" }, + "level=6": { "model": "minecraft:block/air" }, + "level=7": { "model": "minecraft:block/air" }, + "level=8": { "model": "minecraft:block/air" }, + "level=9": { "model": "minecraft:block/air" }, + "level=10": { "model": "minecraft:block/air" }, + "level=11": { "model": "minecraft:block/air" }, + "level=12": { "model": "minecraft:block/air" }, + "level=13": { "model": "minecraft:block/air" }, + "level=14": { "model": "minecraft:block/air" }, + "level=15": { "model": "minecraft:block/air" } } } diff --git a/common/src/main/resources/assets/dimdoors/blockstates/leak.json b/common/src/main/resources/assets/dimdoors/blockstates/leak.json new file mode 100644 index 00000000..810387e8 --- /dev/null +++ b/common/src/main/resources/assets/dimdoors/blockstates/leak.json @@ -0,0 +1,52 @@ +{ + "variants": { + "level=0": { + "model": "minecraft:block/air" + }, + "level=1": { + "model": "minecraft:block/air" + }, + "level=2": { + "model": "minecraft:block/air" + }, + "level=3": { + "model": "minecraft:block/air" + }, + "level=4": { + "model": "minecraft:block/air" + }, + "level=5": { + "model": "minecraft:block/air" + }, + "level=6": { + "model": "minecraft:block/air" + }, + "level=7": { + "model": "minecraft:block/air" + }, + "level=8": { + "model": "minecraft:block/air" + }, + "level=9": { + "model": "minecraft:block/air" + }, + "level=10": { + "model": "minecraft:block/air" + }, + "level=11": { + "model": "minecraft:block/air" + }, + "level=12": { + "model": "minecraft:block/air" + }, + "level=13": { + "model": "minecraft:block/air" + }, + "level=14": { + "model": "minecraft:block/air" + }, + "level=15": { + "model": "minecraft:block/air" + } + } +} diff --git a/common/src/main/resources/assets/dimdoors/lang/en_us.json b/common/src/main/resources/assets/dimdoors/lang/en_us.json index dd5544b8..ef69c4ba 100644 --- a/common/src/main/resources/assets/dimdoors/lang/en_us.json +++ b/common/src/main/resources/assets/dimdoors/lang/en_us.json @@ -18,6 +18,7 @@ "block.dimdoors.orange_fabric": "Orange Altered Fabric", "block.dimdoors.magenta_fabric": "Magenta Altered Fabric", "block.dimdoors.light_blue_fabric": "Light Blue Altered Fabric", + "block.dimdoors.light_gray_fabric": "Light Gray Altered Fabric", "block.dimdoors.yellow_fabric": "Yellow Altered Fabric", "block.dimdoors.lime_fabric": "Lime Altered Fabric", "block.dimdoors.pink_fabric": "Pink Altered Fabric", @@ -195,6 +196,7 @@ "item.dimdoors.creepy_record": "Music Disc", "item.dimdoors.creepy_record.desc": "Creepy - The sound of Limbo", "item.dimdoors.eternal_fluid_bucket": "Eternal Fluid Bucket", + "item.dimdoors.leak_bucket": "Leak Bucket", "item.dimdoors.white_void_record": "Music Disc", "item.dimdoors.white_void_record.desc": "White Void - The sound of Pocket", "item.dimdoors.dimensional_eraser": "Dimensional Eraser", @@ -351,8 +353,14 @@ "text.autoconfig.dimdoors.option.limbo.universalLimbo.@Tooltip": "When true, players are also teleported to Limbo when they die in any non-Pocket Dimension (except Limbo itself). Otherwise, players only go to Limbo if they die in a Pocket Dimension.", "text.autoconfig.dimdoors.option.limbo.hardcoreLimbo": "Hardcore Limbo", "text.autoconfig.dimdoors.option.limbo.hardcoreLimbo.@Tooltip": "When true, a player dying in Limbo will respawn in Limbo, making Eternal Fluid or Golden Dimensional Doors the only way to escape Limbo.", - "text.autoconfig.dimdoors.option.limbo.decaySpreadChance": "Decay Spread Chance", - "text.autoconfig.dimdoors.option.limbo.decaySpreadChance.@Tooltip": "To be filled out.", + "text.autoconfig.dimdoors.option.limbo.limboBlocksCorruptingOverworldAmount": "Overworld Decay Radius", + "text.autoconfig.dimdoors.option.limbo.limboBlocksCorruptingOverworldAmount.@Tooltip": "The radius around a player in which blocks can decay upon exiting limbo.", + "text.autoconfig.dimdoors.option.limbo.worldsLeadingToLimbo": "Worlds Leading to Limbo", + "text.autoconfig.dimdoors.option.limbo.worldsLeadingToLimbo.@Tooltip": "Defines a blacklist/whitelist of worlds that will send the player to limbo upon death.", + "text.autoconfig.dimdoors.option.limbo.worldsLeadingToLimbo.list": "List of world ids", + "text.autoconfig.dimdoors.option.limbo.worldsLeadingToLimbo.list.@Tooltip": "List of the ids for worlds in the blacklsit/whitelist.", + "text.autoconfig.dimdoors.option.limbo.worldsLeadingToLimbo.blacklist": "Is it a blacklist?", + "text.autoconfig.dimdoors.option.limbo.worldsLeadingToLimbo.blacklist.@Tooltip": "Boolean that determines if list is a blacklist or white list for worlds.", "text.autoconfig.dimdoors.category.graphics": "Graphics Settings", "text.autoconfig.dimdoors.option.graphics.highlightRiftCoreFor": "Time to Highlight Rift Core", @@ -364,6 +372,12 @@ "text.autoconfig.dimdoors.option.graphics.riftJitter": "Rift Jitter", "text.autoconfig.dimdoors.option.graphics.riftJitter.@Tooltip": "Multiplier affecting how much rifts should jitter, 1 being the default size.", + "text.autoconfig.dimdoors.category.decay": "Decay Settings", + "text.autoconfig.dimdoors.option.decay.decaySpreadChance": "Decay Spread Chance", + "text.autoconfig.dimdoors.option.decay.decaySpreadChance.@Tooltip": "To be filled out.", + "text.autoconfig.dimdoors.option.decay.decayDelay": "Decay Delay", + "text.autoconfig.dimdoors.option.decay.decayDelay.@Tooltip": "In minecraft ticks (20 per second on a healthy server or game), the delay between when a queued decay is scheduled and it fired.", + "argument.dimdoors.schematic.invalidNamespace": "Invalid schematic namespace. Expected one of %s, found %s.", "command.dimdoors.schematicv2.unknownSchematic": "Unknown schematic \"%s\" in namespace \"%s\" ", "dimdoors.destination": "Destination type", diff --git a/common/src/main/resources/assets/dimdoors/models/block/detached_rift.json b/common/src/main/resources/assets/dimdoors/models/block/detached_rift.json new file mode 100644 index 00000000..f17f93e2 --- /dev/null +++ b/common/src/main/resources/assets/dimdoors/models/block/detached_rift.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/air" + } + } +} diff --git a/common/src/main/resources/assets/dimdoors/models/item/leak_bucket.json b/common/src/main/resources/assets/dimdoors/models/item/leak_bucket.json new file mode 100644 index 00000000..c43baeb0 --- /dev/null +++ b/common/src/main/resources/assets/dimdoors/models/item/leak_bucket.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "dimdoors:item/leak_bucket" + } +} diff --git a/common/src/main/resources/assets/dimdoors/models/item/unraveled_spike.json b/common/src/main/resources/assets/dimdoors/models/item/unraveled_spike.json new file mode 100644 index 00000000..aa2b006c --- /dev/null +++ b/common/src/main/resources/assets/dimdoors/models/item/unraveled_spike.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "dimdoors:block/unraveled_spike_up_tip" + } +} diff --git a/original/src/main/resources/assets/dimdoors/textures/block/leak_still.png - Copy.mcmeta b/common/src/main/resources/assets/dimdoors/textures/block/leak_flow.png.mcmeta similarity index 100% rename from original/src/main/resources/assets/dimdoors/textures/block/leak_still.png - Copy.mcmeta rename to common/src/main/resources/assets/dimdoors/textures/block/leak_flow.png.mcmeta diff --git a/common/src/main/resources/assets/dimdoors/textures/item/dimdoor_back.png b/common/src/main/resources/assets/dimdoors/textures/item/dimdoor_back.png index aced4a0717486b970c2c1d5273948a9eed16303f..8b82976d83453f49510170972ff8ef982d2ae399 100644 GIT binary patch literal 3988 zcma)9c|4SB`yWd~gQ1Qs%b>CpNikW*!8BtlSu%;yB{TNKAZy5R60!}lOVV)c zj8J5ZC5+)TB1Vnv*!Q1)?>X;#GX3#BpU?fd@8|j4_j6zO_xfJn>$+o1jrDmzA|L<& zz+-5DynfL00RZd(PT;|a?n;?G=-8d%*Wds^Wg^#({gH$Bqh1D97y#h7=eNcJfy>k# zd=$p&T4K#Tov?oP-i`n-`(He;iXM(wNfpHliWlyj&A18xfHw@0aFoBzT;^93R6u$s z3s>w}xgwY;{}CVjyv}%z;ur`7lG9NPlT+2b^$QYi28X-*G(3teH?ARJsmg}10csT$ zHu=oZ$mwF5p$tW6+ci13>RrP~aD7O-Ur1+K`>MR<}ci zAD#qggIe+Y{;dMyQ6HY-nzW+nEf;?s5Hd{`3BLekM}OpRpkT;>$M0I?OJ1sqTOmRM zQ`VEvBl>^75xhMq@73#(`uZ1#`pD?Lx^=^>_wA?YiM z4o`XcZjFaSe|~>M7sObeNebQu?`Ajab$3BrM+^BZ8)9i)S{ZDZmp%!^At>o!l4g*} z^2~8VLz7q1V)}p$@x+ny3tc% zIxePLO96+gf_tY54<@x-P)^)ft~eI33Ue6(=ZH}ByuLcW?DZh>T{+pf4~propp+Qk z>V{bE1oBlEUn`2T$yIwD^J>wM{Y4|ZbKs)`O=zLdXI=H+S2_}mP^o^d;BG){7o)6? zrMx1$af_FxjbU4TsQdfK`2G7l6*)e0EW|>saMBaFS!KEzIM@x0Gl#u&?8Li+a{Ghc z!a?O9_3!VVz-DP)x#n(~mZ#+V2!GGv#FpLhX#?Qe#L?=r*G&hkLh)pIc|}UY%VYW9!oB2<*hpp?I)nSISTg6ruPSu{ z?YycH3%xm7uz2r0@pgR`(&!nXv z%HB&9aTwOR!@SSdpxNo6d8vK6C^AKmOb9qp+}OF8ITDF44Nb?ZuaOk0ERtB&Il<3c zxbl@}-@`TJbC&y}JTENwG)oc!xH_C9?)G`)*La-5?DLE*tJ=+FIv3uHV8$$OX5L|{ zv{|Zl*PL!`gBq%vpo{8mymzdle41Zu30`sbP%UL1CBNkg@F48F7FM;{63NSHf~ zU2|G%qT(?T_QpLqgCY@iGH;oYP8s3;64~3P`Fj{`v!2lo17`N{5b%Oq1^fymHCKwn z8||jZo01&gVjqW<$y7IRK7t*hYUB{4Dex~*(2F2j4<2Zi)(GNfgM|CBclX40#5+e0 z0!55H>N@R6e;RgLGE;y|q0@2rN>RrrJw-~9NvUJ--WBoFQNu|_nV}_vKz9q}1FAj_ zrhkQjCjyU^TSRWsBl{j{NY*YNCr0`PC5 zo%+SMd-X)o2Va+xU3yw`!e{D&>B2VqbAdDYoe)W7>_g@y&wg6=A{e!xM4g3r@|H(@ z-v6;7ZA20qOA^R+{l({UgYG#vu5DUHk3R0 zvYX!g4YT$)LjONKSC(WKYtH8c%>#<@XyKnX+26HxM>`H%!dZOgRc`5}Fhi!EQ6HgU z3m(6!O7`2~;-A*m->-zx)9Yf8_M#Jv02M!pPhp4bGL;A?O(D_yR#Q)#bd{FRIJ7;b z868C2CE!gbhz|~N`)`PoNn-g`tQt>CdXy~Dw3u^J{mpD4>*|9MdZwfV&zO!!CoP~| zC1CZg?}N-)0IiftRI(hU#VSY!%}Za*)(kt7>eO6pPt|1%%N!`uA);t`=YysTPM0V= zuyoBUTA%5wT9wwEbW_^AzK=Hbeycs5^q0^7G6?MufP&>J)%O>vY^EBV^P0KQ*R(5! z`)sWO&eEyu_z$lC6^iOXHIV`HvQWe4emc%e_>@Lqhn?VjpE+mN=tC0a2g)L2B8c0u zdd+j5*e|y4rJ69PurklDLQq7hu__T(Uoi!5RY8B;G@ZLZQB!YgB;Yl7hThjjU>Qz} zju#Kr$4tXG zO1-I7cKgT>@9*oSA)SPo5X9C7&zg#imS*7ddVvpFr~eTlf1xGx^tZg%bw`GV2Hq-a zx4p~syimU_NP3~}Ql?06xQBukGLx#dAr}lpvwnC1M<&|nElkM(1tlak1CD-)1YB`z zBmm-O?_TptrKfgZ0Rit%(axn@M?N^cGz5_C<)IzBcE>ChY>m7#B!>g~)vXqSG zleVE^U8^u1*#w0MpB|0N5#^RLfR!1KZ2k8e&e^U=d< z>&&Z~kCR*5`^0$d9a(R;=7@LA;qwo*^Fn5&MrAIMeU{EJ1O1FTJwYFD{p`7)pdYg3 z`965llk<-a*lp1e_{Ih#9oS0@+DrTaa_*_fCw@GXRln5Q?Vy$0yTB*7J7j{G?llDt zH($~CDw7{L2q~&#=qP`e@{DfvvyRt_7|Mc&oGN1W_1a0ol3-l{LaVmxdmyf!ZBxrl zY#9qY9+NlRC!9@8@@B&p0ADATy&{(LYL87#y7?bYme<{~8b3PoW$ba!Ci9Xn1s)9y z;x6c5*Hg90g*J0S<+nFPYz~QD?fcQF1TO7PvPn~C%g`|0vVk|qpM7;U0J}G({W#;J ze!#et_L#w;P$*u|@7yeu)7*umt|#MP(zFR>+r zEP?ZG+O~8XXPr}zCeK>GQIwE;UB}@Tn996n?ti%)9I7g_8f6U{@3ZMY;QlZd;6hE1 z3fLbm`kIZqWy=;{%R-1jG^Is)>8Sx~2_oF2Q}Ym{rkmksmRZKdvQLYci@>L#vKz+wMvG$N2L9gBD-$CZtw zjf!G5ch3PIEJ3XOLfV-5yJg40on%8t15Hs*&hcQE;9bTCXWQuPTHF@# za6!db0U=>T6nodAb^onx$Gh*<$Ze!n_4O*;eW~?$X4sQVwo~kM^`kuNUWh5a8Rpk5;Y literal 5460 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 JM;3=|_%9n)R_6c! diff --git a/common/src/main/resources/assets/dimdoors/textures/item/dimdoor_back.png.mcmeta b/common/src/main/resources/assets/dimdoors/textures/item/dimdoor_back.png.mcmeta new file mode 100644 index 00000000..714a7dcd --- /dev/null +++ b/common/src/main/resources/assets/dimdoors/textures/item/dimdoor_back.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": { "frametime": 2 } +} diff --git a/common/src/main/resources/assets/dimdoors/textures/item/leak_bucket.png b/common/src/main/resources/assets/dimdoors/textures/item/leak_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..4ddf8dcfab483add622cf74e35999ac6297c6083 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85o30K$!7fntTONaIdF}V~BOok#ZmqT7{VECB9$kvj; ze%s;1*=zys4|?Aw2jb(fVv&ZqxpZpVHV&s-aPKGk*_%i66s@BN-B?ih3@ zr#!RXV%g`fll(4EIV-za`Esj)io?fmJJPvZjQ!uGv@sYeYI3-AJqlW#B$4c+*b=#6 ztD&0Z^G`dktdd~L;N=Nkv`4DJjp64Zpn?;hv>6)98y@N_h>09s-*D6@$#WrVKoqZo z?vusaw=3N!j{G0wWy?5gOX`J=1l?0WkMN~Nc&7RKGH3zW96$^Lmx3pQC{I^Emvv4F FO#r1lbD97E literal 0 HcmV?d00001 diff --git a/common/src/main/resources/data/dimdoors/door/data/iron_door.json b/common/src/main/resources/data/dimdoors/door/data/iron_door.json deleted file mode 100644 index 409cd37e..00000000 --- a/common/src/main/resources/data/dimdoors/door/data/iron_door.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "data": { - "destination": { - "type": "dimdoors:public_pocket" - } - }, - "condition": { - "type": "dimdoors:always_true" - } - } -] diff --git a/common/src/main/resources/data/dimdoors/recipes/wood_dimensional_trapdoor.json b/common/src/main/resources/data/dimdoors/recipes/wood_dimensional_trapdoor.json deleted file mode 100644 index baadfaad..00000000 --- a/common/src/main/resources/data/dimdoors/recipes/wood_dimensional_trapdoor.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#X" - ], - "key": { - "#": { - "tag": "minecraft:wooden_trapdoors" - }, - "X": { - "item": "minecraft:ender_pearl" - } - }, - "result": { - "_comment": "TODO: remove this recipe", - "item": "dimdoors:wood_dimensional_trapdoor", - "count": 1 - } -} diff --git a/fabric/build.gradle b/fabric/build.gradle index 8215cb46..68b14b3b 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -38,12 +38,18 @@ def includeCompile(entry) { } } +repositories { + maven { + url = "https://maven.terraformersmc.com/releases/" + } +} + dependencies { modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" // Remove the next line if you don't want to depend on the API modApi "dev.architectury:architectury-fabric:${rootProject.architectury_version}" - modApi "me.shedaniel.cloth:cloth-config-fabric:9.0.94" + modApi "me.shedaniel.cloth:cloth-config-fabric:10.1.105" includeCompile("curse.maven:cardinal-components-base-${project.project.cardinal_components}:${project.cardinal_components_base}") includeCompile("curse.maven:cardinal-components-item-${project.project.cardinal_components}:${project.cardinal_components_item}") @@ -62,6 +68,12 @@ dependencies { modApi "mcp.mobius.waila:wthit:fabric-${wthitVersion}" modApi "lol.bai:badpackets:fabric-0.2.0" modApi "com.sk89q.worldedit:worldedit-fabric-mc${rootProject.minecraft_version}:${rootProject.worldedit}" + modApi "mcp.mobius.waila:wthit:fabric-${wthitVersion}" + modApi "com.terraformersmc:modmenu:6.3.1" + + modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-fabric:$rei_version" + modCompileOnly "me.shedaniel:RoughlyEnoughItems-api-fabric:$rei_version" + modCompileOnly "me.shedaniel:RoughlyEnoughItems-default-plugin-fabric:$rei_version" } processResources { diff --git a/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/DatagenInitializer.java b/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/DatagenInitializer.java index b552caf7..55ec70b5 100644 --- a/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/DatagenInitializer.java +++ b/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/DatagenInitializer.java @@ -12,7 +12,7 @@ public class DatagenInitializer implements DataGeneratorEntrypoint { public void onInitializeDataGenerator(FabricDataGenerator generator) { var pack = generator.createPack(); - pack.addProvider(BlockStateProvider::new); + pack.addProvider(DimDoorsModelProvider::new); pack.addProvider((DataProvider.Factory) DimdoorsRecipeProvider::new); pack.addProvider((FabricDataGenerator.Pack.RegistryDependentFactory) AdvancementProvider::new); pack.addProvider(org.dimdev.dimdoors.datagen.LootTableProvider::new); diff --git a/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/BlockStateProvider.java b/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/DimDoorsModelProvider.java similarity index 96% rename from fabric/src/main/datagen/org/dimdev/dimdoors/datagen/BlockStateProvider.java rename to fabric/src/main/datagen/org/dimdev/dimdoors/datagen/DimDoorsModelProvider.java index 0d37ae86..97307e64 100644 --- a/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/BlockStateProvider.java +++ b/fabric/src/main/datagen/org/dimdev/dimdoors/datagen/DimDoorsModelProvider.java @@ -14,7 +14,6 @@ import net.minecraft.data.models.model.ModelLocationUtils; import net.minecraft.data.models.model.ModelTemplates; import net.minecraft.data.models.model.TextureMapping; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -27,8 +26,8 @@ import org.dimdev.dimdoors.item.ModItems; import static net.minecraft.data.models.model.TextureMapping.getBlockTexture; import static net.minecraft.data.models.model.TextureMapping.getItemTexture; -public class BlockStateProvider extends FabricModelProvider { - public BlockStateProvider(FabricDataOutput dataGenerator) { +public class DimDoorsModelProvider extends FabricModelProvider { + public DimDoorsModelProvider(FabricDataOutput dataGenerator) { super(dataGenerator); } @@ -136,11 +135,11 @@ public class BlockStateProvider extends FabricModelProvider { generator.createTrivialCube(ModBlocks.GRITTY_STONE.get()); generator.family(ModBlocks.REALITY_SPONGE.get()); - registerPointedDripstone(generator); + registerUnraveledSpike(generator); } - private void registerPointedDripstone(BlockModelGenerators generator) { + private void registerUnraveledSpike(BlockModelGenerators generator) { PropertyDispatch.C2 doubleProperty = PropertyDispatch.properties(BlockStateProperties.VERTICAL_DIRECTION, BlockStateProperties.DRIPSTONE_THICKNESS); for (DripstoneThickness thickness : DripstoneThickness.values()) { doubleProperty.select(Direction.UP, thickness, createPointedUnraveledspikeVariant(generator, Direction.UP, thickness)); @@ -152,9 +151,10 @@ public class BlockStateProvider extends FabricModelProvider { } public final Variant createPointedUnraveledspikeVariant(BlockModelGenerators generators, Direction direction, DripstoneThickness dripstoneThickness) { + generators.skipAutoItemBlock(ModBlocks.UNRAVELED_SPIKE.get()); String string = "_" + direction.getSerializedName() + "_" + dripstoneThickness.getSerializedName(); TextureMapping textureMapping = TextureMapping.cross(TextureMapping.getBlockTexture(ModBlocks.UNRAVELED_SPIKE.get(), string)); - return Variant.variant().with(VariantProperties.MODEL, ModelTemplates.POINTED_DRIPSTONE.createWithSuffix(Blocks.POINTED_DRIPSTONE, string, textureMapping, generators.modelOutput)); + return Variant.variant().with(VariantProperties.MODEL, ModelTemplates.CROSS.createWithSuffix(ModBlocks.UNRAVELED_SPIKE.get(), string, textureMapping, generators.modelOutput)); } public void registerDoor(BlockModelGenerators generator, Block doorBlock, Block textureSource) { diff --git a/fabric/src/main/java/org/dimdev/dimdoors/compat/ModMenuCompat.java b/fabric/src/main/java/org/dimdev/dimdoors/compat/ModMenuCompat.java new file mode 100644 index 00000000..786aa079 --- /dev/null +++ b/fabric/src/main/java/org/dimdev/dimdoors/compat/ModMenuCompat.java @@ -0,0 +1,11 @@ +package org.dimdev.dimdoors.compat; + +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; + +public class ModMenuCompat implements ModMenuApi { + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return org.dimdev.dimdoors.client.config.ModMenu::getConfigScreen; + } +} diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index a82e097b..9822e681 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -33,7 +33,8 @@ ], "fabric-datagen": [ "org.dimdev.dimdoors.datagen.DatagenInitializer" - ] + ], + "modmenu": [ "org.dimdev.dimdoors.compat.ModMenuCompat" ] }, "mixins": [ "dimdoors.mixins.json", diff --git a/forge/build.gradle b/forge/build.gradle index f1db8df4..8232ca6f 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -43,6 +43,10 @@ dependencies { modApi "mcp.mobius.waila:wthit:forge-${wthitVersion}" modApi "lol.bai:badpackets:forge-0.2.0" modApi "com.sk89q.worldedit:worldedit-forge-mc${rootProject.minecraft_version}:${rootProject.worldedit}" + + modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-forge:$rei_version" + modCompileOnly "me.shedaniel:RoughlyEnoughItems-api-forge:$rei_version" + modCompileOnly "me.shedaniel:RoughlyEnoughItems-default-plugin-forge:$rei_version" } processResources { diff --git a/forge/src/main/java/org/dimdev/dimdoors/DimensionalDoorsForge.java b/forge/src/main/java/org/dimdev/dimdoors/DimensionalDoorsForge.java index 183c5bb4..89ab4cf9 100644 --- a/forge/src/main/java/org/dimdev/dimdoors/DimensionalDoorsForge.java +++ b/forge/src/main/java/org/dimdev/dimdoors/DimensionalDoorsForge.java @@ -2,12 +2,17 @@ package org.dimdev.dimdoors; import dev.architectury.platform.forge.EventBuses; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.client.ConfigScreenHandler; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; import net.minecraftforge.event.AttachCapabilitiesEvent; +import net.minecraftforge.fml.ModContainer; +import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.javafmlmod.FMLModContainer; import org.dimdev.dimdoors.client.DimensionalDoorsClient; +import org.dimdev.dimdoors.client.config.ModMenu; import org.dimdev.dimdoors.item.component.forge.CounterComponentImpl; import org.dimdev.dimdoors.world.level.component.ChunkLazilyGeneratedComponent; import org.dimdev.dimdoors.world.level.component.forge.ChunkLazilyGeneratedComponentImpl; @@ -23,7 +28,11 @@ public class DimensionalDoorsForge { EventBuses.registerModEventBus(DimensionalDoors.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus()); DimensionalDoors.init(); - FMLJavaModLoadingContext.get().getModEventBus().addListener((Consumer) event -> DimensionalDoorsClient.init()); + FMLJavaModLoadingContext.get().getModEventBus().addListener((Consumer) event -> { + ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory((minecraft, screen) -> ModMenu.getConfigScreen(screen))); + DimensionalDoorsClient.init(); + }); + FMLJavaModLoadingContext.get().getModEventBus().addListener((Consumer) registerCapabilitiesEvent -> { registerCapabilitiesEvent.register(CounterComponentImpl.class); diff --git a/gradle.properties b/gradle.properties index 6a93b432..7ccef52c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -28,4 +28,6 @@ cardinal_components_item=4160621 cardinal_components_entity=4160620 cardinal_components_level=4160622 cardinal_components_world=4160624 -cardinal_components_chunk=4160619 \ No newline at end of file +cardinal_components_chunk=4160619 + +rei_version=11.0.644 \ No newline at end of file diff --git a/original/src/main/resources/assets/dimdoors/blockstates/detached_rift.json b/original/src/main/resources/assets/dimdoors/blockstates/detached_rift.json deleted file mode 100644 index 134a7a1b..00000000 --- a/original/src/main/resources/assets/dimdoors/blockstates/detached_rift.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "variants": { - "": {"model": "dimdoors:block/detached_rift"} - } -} diff --git a/settings.gradle.kts b/settings.gradle.kts index 191b0ebc..dc34aa75 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,4 +7,4 @@ pluginManagement.repositories { include("common", "fabric", "forge") -rootProject.name = "DimDoors" \ No newline at end of file +rootProject.name = "dimdoors.common.main" \ No newline at end of file