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.
This commit is contained in:
parent
05aa26e2d0
commit
9091b77aa3
35 changed files with 279 additions and 101 deletions
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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> level) {
|
||||
return worldsLeadingToLimbo.blacklist != worldsLeadingToLimbo.list.contains(level.location().toString());
|
||||
}
|
||||
|
||||
public static final class WorldList {
|
||||
@Tooltip public List<String> list;
|
||||
@Tooltip public boolean blacklist;
|
||||
|
||||
public WorldList(List<String> 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 {
|
||||
|
|
|
@ -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<Block> 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<LiquidBlock> ETERNAL_FLUID = register("eternal_fluid", () -> {
|
||||
return new EternalFluidBlock(of(Material.LAVA, MaterialColor.COLOR_RED).lightLevel(state -> 15));
|
||||
});
|
||||
public static final RegistrySupplier<LiquidBlock> ETERNAL_FLUID = registerWithoutTab("eternal_fluid", () -> new EternalFluidBlock(of(Material.LAVA, MaterialColor.COLOR_RED).lightLevel(state -> 15)));
|
||||
|
||||
public static final RegistrySupplier<LiquidBlock> LEAK = registerWithoutTab("leak", () -> new ArchitecturyLiquidBlock(ModFluids.LEAK, of(WATER)));
|
||||
|
||||
public static final RegistrySupplier<Block> DECAYED_BLOCK = registerWithoutTab("decayed_block", () -> new UnravelledFabricBlock(UNRAVELLED_FABRIC_BLOCK_SETTINGS));
|
||||
|
||||
|
@ -218,14 +220,13 @@ public final class ModBlocks {
|
|||
|
||||
public static final RegistrySupplier<Block> UNRAVELED_SPIKE = register("unraveled_spike", () -> new PointedDripstoneBlock(of(UNRAVELLED_FABRIC.get()).lightLevel(state -> 0))); //TODO: make this proper class later
|
||||
public static final RegistrySupplier<Block> GRITTY_STONE = register("gritty_stone", () -> new Block(of(STONE)));
|
||||
public static final RegistrySupplier<Block> LEAK = register("leak", () -> new Block(of(WATER)));
|
||||
|
||||
public static void init() {
|
||||
BLOCKS.register();
|
||||
BLOCK_ITEMS.register();
|
||||
}
|
||||
|
||||
private static RegistrySupplier<Block> registerWithoutTab(String name, Supplier<Block> block) {
|
||||
private static <T extends Block> RegistrySupplier<T> registerWithoutTab(String name, Supplier<T> block) {
|
||||
return BLOCKS.register(name, block);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,9 +26,21 @@ 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 {
|
||||
private static final ConfigEntryBuilder ENTRY_BUILDER = ConfigEntryBuilder.create();
|
||||
|
||||
public static void init() {
|
||||
MenuRegistry.registerScreenFactory(ModScreenHandlerTypes.TESSELATING_LOOM.get(), TesselatingLoomScreen::new);
|
||||
ModEntityTypes.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<String>) 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<Field> 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<Field> 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 {
|
||||
|
|
|
@ -23,6 +23,12 @@ public class ModFluids {
|
|||
public static final RegistrySupplier<? extends Fluid> FLOWING_ETERNAL_FLUID = register("flowing_eternal_fluid", () -> new ArchitecturyFlowingFluid.Flowing(ModFluids.ETERNAL_FLUID_ATTRIBUTES));
|
||||
public static final RegistrySupplier<? extends FlowingFluid> 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<? extends Fluid> FLOWING_LEAK = register("flowing_leak_fluid", () -> new ArchitecturyFlowingFluid.Flowing(ModFluids.LEAK_ATTRIBUTES));
|
||||
public static final RegistrySupplier<? extends FlowingFluid> LEAK = register("leak", () -> new ArchitecturyFlowingFluid.Source(ModFluids.LEAK_ATTRIBUTES));
|
||||
|
||||
private static <T extends Fluid> RegistrySupplier<? extends T> register(String string, Supplier<T> fluid) {
|
||||
return FLUIDS.register(DimensionalDoors.id(string), fluid);
|
||||
}
|
||||
|
|
|
@ -90,6 +90,7 @@ public final class ModItems {
|
|||
public static final RegistrySupplier<Item> WHITE_VOID_RECORD = register("white_void_record", properties -> new ArchitecturyRecordItem(10, ModSoundEvents.WHITE_VOID, properties, 225));
|
||||
|
||||
public static final RegistrySupplier<Item> ETERNAL_FLUID_BUCKET = register("eternal_fluid_bucket", properties -> new ArchitecturyBucketItem(ModFluids.ETERNAL_FLUID, properties.craftRemainder(Items.BUCKET).stacksTo(1)));
|
||||
public static final RegistrySupplier<Item> LEAK_BUCKET = register("leak_bucket", properties -> new ArchitecturyBucketItem(ModFluids.LEAK, properties.craftRemainder(Items.BUCKET).stacksTo(1)));
|
||||
|
||||
public static final RegistrySupplier<Item> MASK_SHARD = register("mask_shard", Item::new);
|
||||
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<ResourceKey<Level>, Set<DecayTask>> 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;
|
||||
}
|
||||
}
|
|
@ -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" }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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" }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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",
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"variants": {
|
||||
"": {
|
||||
"model": "minecraft:block/air"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "dimdoors:item/leak_bucket"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "dimdoors:block/unraveled_spike_up_tip"
|
||||
}
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 3.9 KiB |
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"animation": { "frametime": 2 }
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 322 B |
|
@ -1,12 +0,0 @@
|
|||
[
|
||||
{
|
||||
"data": {
|
||||
"destination": {
|
||||
"type": "dimdoors:public_pocket"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"type": "dimdoors:always_true"
|
||||
}
|
||||
}
|
||||
]
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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 {
|
||||
|
|
|
@ -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<DataProvider>) DimdoorsRecipeProvider::new);
|
||||
pack.addProvider((FabricDataGenerator.Pack.RegistryDependentFactory<DataProvider>) AdvancementProvider::new);
|
||||
pack.addProvider(org.dimdev.dimdoors.datagen.LootTableProvider::new);
|
||||
|
|
|
@ -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<Direction, DripstoneThickness> 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) {
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -33,7 +33,8 @@
|
|||
],
|
||||
"fabric-datagen": [
|
||||
"org.dimdev.dimdoors.datagen.DatagenInitializer"
|
||||
]
|
||||
],
|
||||
"modmenu": [ "org.dimdev.dimdoors.compat.ModMenuCompat" ]
|
||||
},
|
||||
"mixins": [
|
||||
"dimdoors.mixins.json",
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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<FMLClientSetupEvent>) event -> DimensionalDoorsClient.init());
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener((Consumer<FMLClientSetupEvent>) event -> {
|
||||
ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory((minecraft, screen) -> ModMenu.getConfigScreen(screen)));
|
||||
DimensionalDoorsClient.init();
|
||||
});
|
||||
|
||||
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener((Consumer<RegisterCapabilitiesEvent>) registerCapabilitiesEvent -> {
|
||||
registerCapabilitiesEvent.register(CounterComponentImpl.class);
|
||||
|
|
|
@ -29,3 +29,5 @@ cardinal_components_entity=4160620
|
|||
cardinal_components_level=4160622
|
||||
cardinal_components_world=4160624
|
||||
cardinal_components_chunk=4160619
|
||||
|
||||
rei_version=11.0.644
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"variants": {
|
||||
"": {"model": "dimdoors:block/detached_rift"}
|
||||
}
|
||||
}
|
|
@ -7,4 +7,4 @@ pluginManagement.repositories {
|
|||
|
||||
include("common", "fabric", "forge")
|
||||
|
||||
rootProject.name = "DimDoors"
|
||||
rootProject.name = "dimdoors.common.main"
|
Loading…
Reference in a new issue