diff --git a/Roadmap.txt b/Roadmap.txt index 3478aa0..d8fc677 100644 --- a/Roadmap.txt +++ b/Roadmap.txt @@ -1,21 +1,7 @@ -Eternium Ore [done] -Eternium Fragment [done] -Eternium Dust [partial] [ smelt fragment into dust. 1x. crush/grind = 4x ] -Ihan Crystal [partially] [XP is stored or retrieved. But is used by the mod as a charge. Eternium Dust will be used in the center] -Aurora Block [done/partial] [blasting > 4x dust] -Aurora Door [done] -Aurora Pressure Plate [not done] -Reinforced Auroran Compound [not done] -Aurora Portal Frame [not done] [stonecutting -> portal frame] [2 slots. 1 for eyes of ender, other reverse side for charged ihan crystals. portal verical. portal uses nether portal logic.] +Liquids + * Liquified Soul Energy + * Liquified Experience -* Dimension contents up in air -* Dimension will be timelocked, changes do not persist, and the world reverts itself after a period of time. -* Natural structures within the fractured dimension can be a refinery which can refine materials you mine in the realm -* Minerals not refined in the eternium dimension have a property where they will be destroyed from inventory if removed from dimension, and cannot be used in a normal crafting recipe. -* Dimension water acts like a fountain of youth -* As everything happening in the dimension canonically is happening all at once, the dimension will have a unique feature where server chat will not function -The player may also encounter other explorers, but they will be very glitched, their actions will make little sense, if they are mining, they may vanish into the ground like a ghost -The player cannot stay there too long as the ihan crystal charges will eventually run out -* Mekanism plugin machine: Skulk Extractor - This machine will rip skulk blocks apart atom by atom to get every last drop of XP stored within and can charge a crystal, or convert it into a single use ihan crystal with a lesser charge. -* Adventure system with unique villager NPC that gives quests. This could be within the Eternium Dimension, or it could be from village to village. Rewards not yet determined. \ No newline at end of file + +Super Furnace + * Melts materials into liquids. This is how to obtain the OTEMod liquids. \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 01ba373..0489f00 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,9 +3,11 @@ org.gradle.jvmargs=-Xmx8G org.gradle.daemon=false -my_version=1.3.5.6 +my_version=1.3.6.1 mc_version=1.19.2 forge_version=43.2.3 libz_version=1.0.2.4 +parchment_version=2022.11.27 +jei_version=11.5.0.297 # luckperms_version=5.4 \ No newline at end of file diff --git a/src/main/java/dev/zontreck/otemod/OTEMod.java b/src/main/java/dev/zontreck/otemod/OTEMod.java index 6065dfb..4e29ae5 100644 --- a/src/main/java/dev/zontreck/otemod/OTEMod.java +++ b/src/main/java/dev/zontreck/otemod/OTEMod.java @@ -40,6 +40,7 @@ import org.slf4j.Logger; import dev.zontreck.libzontreck.chat.ChatColor; import dev.zontreck.libzontreck.vectors.Vector3; import dev.zontreck.otemod.blocks.ModBlocks; +import dev.zontreck.otemod.blocks.entity.ModEntities; import dev.zontreck.otemod.chat.ChatServerOverride; import dev.zontreck.otemod.commands.CommandRegistry; import dev.zontreck.otemod.commands.teleport.TeleportContainer; @@ -48,9 +49,10 @@ import dev.zontreck.otemod.configs.Profile; import dev.zontreck.otemod.database.Database; import dev.zontreck.otemod.database.Database.DatabaseConnectionException; import dev.zontreck.otemod.events.EventHandler; -import dev.zontreck.otemod.implementation.VaultScreen; -import dev.zontreck.otemod.implementation.VaultWatcher; -import dev.zontreck.otemod.implementation.inits.MenuInitializer; +import dev.zontreck.otemod.implementation.inits.ModMenuTypes; +import dev.zontreck.otemod.implementation.scrubber.ScrubberScreen; +import dev.zontreck.otemod.implementation.vault.VaultScreen; +import dev.zontreck.otemod.implementation.vault.VaultWatcher; import dev.zontreck.otemod.items.ModItems; import dev.zontreck.otemod.ore.Modifier.ModifierOfBiomes; @@ -106,10 +108,12 @@ public class OTEMod MinecraftForge.EVENT_BUS.register(new CommandRegistry()); MinecraftForge.EVENT_BUS.register(new VaultWatcher()); MinecraftForge.EVENT_BUS.register(new dev.zontreck.otemod.zschem.EventHandler()); - MenuInitializer.CONTAINERS.register(bus); + ModMenuTypes.CONTAINERS.register(bus); ModBlocks.register(bus); ModItems.register(bus); + ModEntities.register(bus); + //MenuInitializer.register(bus); } private void setup(final FMLCommonSetupEvent event) @@ -279,7 +283,8 @@ public class OTEMod //LOGGER.info("HELLO FROM CLIENT SETUP"); //LOGGER.info("MINECRAFT NAME >> {}", Minecraft.getInstance().getUser().getName()); - MenuScreens.register(MenuInitializer.VAULT.get(), VaultScreen::new); + MenuScreens.register(ModMenuTypes.VAULT.get(), VaultScreen::new); + MenuScreens.register(ModMenuTypes.SCRUBBER.get(), ScrubberScreen::new); //ItemBlockRenderTypes.setRenderLayer(ModBlocks.AURORA_DOOR.get(), RenderType.translucent()); } diff --git a/src/main/java/dev/zontreck/otemod/blocks/ItemScrubberBlock.java b/src/main/java/dev/zontreck/otemod/blocks/ItemScrubberBlock.java new file mode 100644 index 0000000..45e94e4 --- /dev/null +++ b/src/main/java/dev/zontreck/otemod/blocks/ItemScrubberBlock.java @@ -0,0 +1,86 @@ +package dev.zontreck.otemod.blocks; + +import javax.annotation.Nullable; + +import dev.zontreck.otemod.blocks.entity.ItemScrubberBlockEntity; +import dev.zontreck.otemod.blocks.entity.ModEntities; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraftforge.network.NetworkHooks; + +public class ItemScrubberBlock extends BaseEntityBlock +{ + + public ItemScrubberBlock(Properties p_54120_) { + super(p_54120_); + } + + + @Override + public RenderShape getRenderShape(BlockState state) + { + return RenderShape.MODEL; + } + + @Override + public void onRemove(BlockState state, Level lvl, BlockPos pos, BlockState newState, boolean isMoving) + { + if(state.getBlock()!=newState.getBlock()) + { + BlockEntity bE = lvl.getBlockEntity(pos); + if(bE instanceof ItemScrubberBlockEntity) + { + ((ItemScrubberBlockEntity)bE).doDrop(); + } + } + + super.onRemove(state, lvl, pos, newState, isMoving); + } + + @Override + public InteractionResult use(BlockState state, Level lvl, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) + { + if(!lvl.isClientSide()) + { + BlockEntity be = lvl.getBlockEntity(pos); + if(be instanceof ItemScrubberBlockEntity) + { + NetworkHooks.openScreen(((ServerPlayer)player), (ItemScrubberBlockEntity)be, pos); + }else{ + throw new IllegalStateException("Our container is missing!"); + } + } + + return InteractionResult.sidedSuccess(lvl.isClientSide); + } + + @Override + @Nullable + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new ItemScrubberBlockEntity(pos, state); + } + + @Override + public BlockEntityTicker getTicker(Level lvl, BlockState state, BlockEntityType type) + { + return createTickerHelper(type, ModEntities.ITEM_SCRUBBER.get(), ItemScrubberBlockEntity::tick); + } + +} diff --git a/src/main/java/dev/zontreck/otemod/blocks/ModBlocks.java b/src/main/java/dev/zontreck/otemod/blocks/ModBlocks.java index 55d9cee..96d8d06 100644 --- a/src/main/java/dev/zontreck/otemod/blocks/ModBlocks.java +++ b/src/main/java/dev/zontreck/otemod/blocks/ModBlocks.java @@ -1,15 +1,22 @@ package dev.zontreck.otemod.blocks; import dev.zontreck.otemod.OTEMod; +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvents; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; +import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.DoorBlock; +import net.minecraft.world.level.block.IronBarsBlock; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockBehaviour.StatePredicate; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.MaterialColor; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; @@ -25,10 +32,42 @@ public class ModBlocks { OTEMod.LOGGER.info("Registering all blocks..."); } - public static final RegistryObject ETERNIUM_ORE_BLOCK = BLOCKS.register("eternium_ore_block", () -> new Block(BlockBehaviour.Properties.of(Material.METAL).requiresCorrectToolForDrops().strength(4f).explosionResistance(1200).destroyTime(6))); + public static final RegistryObject ETERNIUM_ORE_BLOCK = BLOCKS.register("eternium_ore_block", () -> new Block(BlockBehaviour.Properties.of(Material.METAL).requiresCorrectToolForDrops().strength(7F).explosionResistance(1200).destroyTime(6))); public static final RegistryObject ETERNIUM_ORE_BLOCK_I = ITEMS.register("eternium_ore_block", () -> new BlockItem(ETERNIUM_ORE_BLOCK.get(), new Item.Properties().tab(CreativeModeTab.TAB_MISC))); + //#region TINKERS BLOCKS + + public static final RegistryObject COBALT_ORE_BLOCK = BLOCKS.register("cobalt_ore", () -> new Block(BlockBehaviour.Properties.of(Material.STONE, MaterialColor.NETHER).sound(SoundType.NETHER_ORE).requiresCorrectToolForDrops().strength(10.0F))); + + public static final RegistryObject COBALT_ORE_ITEM = ITEMS.register("cobalt_ore", ()->new BlockItem(COBALT_ORE_BLOCK.get(), new Item.Properties().tab(CreativeModeTab.TAB_MATERIALS))); + + public static final RegistryObject RAW_COBALT_ORE_BLOCK = BLOCKS.register("raw_cobalt_ore", () -> new Block(BlockBehaviour.Properties.of(Material.STONE, MaterialColor.COLOR_BLUE).sound(SoundType.NETHER_ORE).requiresCorrectToolForDrops().strength(6.0F, 7.0F))); + + public static final RegistryObject RAW_COBALT_ORE_ITEM = ITEMS.register("raw_cobalt_ore", ()->new BlockItem(RAW_COBALT_ORE_BLOCK.get(), new Item.Properties().tab(CreativeModeTab.TAB_MATERIALS))); + + public static final RegistryObject GOLD_BARS = BLOCKS.register("gold_bars", ()-> new IronBarsBlock(BlockBehaviour.Properties.of(Material.METAL, MaterialColor.NONE).requiresCorrectToolForDrops().strength(3.0F, 6.0F).sound(SoundType.METAL).noOcclusion())); + + public static final RegistryObject GOLD_BARS_I = ITEMS.register("gold_bars", ()-> new BlockItem(GOLD_BARS.get(), new Item.Properties().tab(CreativeModeTab.TAB_MATERIALS))); + + public static final RegistryObject COBALT_BLOCK = BLOCKS.register("cobalt_block", ()-> new Block(BlockBehaviour.Properties.of(Material.METAL, MaterialColor.COLOR_BLUE).requiresCorrectToolForDrops().strength(3.0F, 6.0F).sound(SoundType.METAL))); + + public static final RegistryObject COBALT_BLOCK_I = ITEMS.register("cobalt_block", ()-> new BlockItem(COBALT_BLOCK.get(), new Item.Properties().tab(CreativeModeTab.TAB_MATERIALS))); + + public static final RegistryObject NETHER_GROUT = BLOCKS.register("nether_grout", ()-> new Block(BlockBehaviour.Properties.of(Material.SAND, MaterialColor.NONE).strength(3.0F).friction(0.8F).sound(SoundType.SOUL_SOIL))); + + public static final RegistryObject NETHER_GROUT_I = ITEMS.register("nether_grout", ()-> new BlockItem(NETHER_GROUT.get(), new Item.Properties().tab(CreativeModeTab.TAB_MATERIALS))); + + public static final BlockBehaviour.Properties SCORCHED_BASE = BlockBehaviour.Properties.of(Material.STONE, MaterialColor.TERRACOTTA_BROWN).requiresCorrectToolForDrops().strength(2.5F, 8.0F); + public static final BlockBehaviour.Properties SCORCHED_BASE_NONSOLID = SCORCHED_BASE.noOcclusion(); + + public static final RegistryObject SCORCHED_TABLE = BLOCKS.register("scorched_table", ()-> new Block(SCORCHED_BASE_NONSOLID)); + + public static final RegistryObject SCORCHED_TABLE_I = ITEMS.register("scorched_table", ()-> new BlockItem(SCORCHED_TABLE.get(), new Item.Properties().tab(CreativeModeTab.TAB_MATERIALS))); + + //#endregion + + public static final RegistryObject DEEPSLATE_ETERNIUM_ORE_BLOCK = BLOCKS.register("deepslate_eternium_ore_block", () -> new Block(BlockBehaviour.Properties.of(Material.METAL).requiresCorrectToolForDrops().strength(5f).explosionResistance(1200).destroyTime(7))); public static final RegistryObject DEEPSLATE_ETERNIUM_ORE_BLOCK_I = ITEMS.register("deepslate_eternium_ore_block", () -> new BlockItem(DEEPSLATE_ETERNIUM_ORE_BLOCK.get(), new Item.Properties().tab(CreativeModeTab.TAB_MISC))); @@ -43,8 +82,18 @@ public class ModBlocks { public static final RegistryObject AURORA_DOOR_I = ITEMS.register("aurora_door", () -> new BlockItem(AURORA_DOOR.get(), new Item.Properties().tab(CreativeModeTab.TAB_MISC))); - public static final RegistryObject CLEAR_GLASS_BLOCK = BLOCKS.register("clear_glass_block", () -> new Block(BlockBehaviour.Properties.copy(Blocks.GLASS).strength(1f).destroyTime(6))); + public static final RegistryObject CLEAR_GLASS_BLOCK = BLOCKS.register("clear_glass_block", () -> new Block(BlockBehaviour.Properties.copy(Blocks.GLASS).strength(1f).destroyTime(6).noOcclusion().isViewBlocking(ModBlocks::never))); public static final RegistryObject CLEAR_GLASS_BLOCK_I = ITEMS.register("clear_glass_block", () -> new BlockItem(CLEAR_GLASS_BLOCK.get(), new Item.Properties().tab(CreativeModeTab.TAB_MISC))); + + public static final RegistryObject ITEM_SCRUBBER = BLOCKS.register("item_scrubber", ()->new ItemScrubberBlock(BlockBehaviour.Properties.copy(ModBlocks.AURORA_BLOCK.get()).noOcclusion().isViewBlocking(ModBlocks::never))); + + public static final RegistryObject ITEM_SCRUBBER_I = ITEMS.register("item_scrubber", ()->new BlockItem(ITEM_SCRUBBER.get(), new Item.Properties().tab(CreativeModeTab.TAB_REDSTONE))); + + + + private static boolean never(BlockState p_50806_, BlockGetter p_50807_, BlockPos p_50808_) { + return false; + } } diff --git a/src/main/java/dev/zontreck/otemod/blocks/entity/ItemScrubberBlockEntity.java b/src/main/java/dev/zontreck/otemod/blocks/entity/ItemScrubberBlockEntity.java new file mode 100644 index 0000000..18ccb94 --- /dev/null +++ b/src/main/java/dev/zontreck/otemod/blocks/entity/ItemScrubberBlockEntity.java @@ -0,0 +1,247 @@ +package dev.zontreck.otemod.blocks.entity; + +import javax.annotation.Nullable; + +import dev.zontreck.otemod.implementation.OutputItemStackHandler; +import dev.zontreck.otemod.implementation.scrubber.ScrubberMenu; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.world.Containers; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.ItemStackHandler; + +public class ItemScrubberBlockEntity extends BlockEntity implements MenuProvider +{ + + protected final ItemStackHandler itemsHandler = new ItemStackHandler(1){ + @Override + protected void onContentsChanged(int slot) + { + setChanged(); + } + }; + protected final ItemStackHandler outputItems = new ItemStackHandler(1){ + @Override + protected void onContentsChanged(int slot) + { + setChanged(); + } + }; + private ItemStackHandler outputSlot; + + private LazyOptional lazyItemHandler = LazyOptional.empty(); + private LazyOptional lazyOutputItems = LazyOptional.empty(); + + public ItemScrubberBlockEntity(BlockPos pos, BlockState state) { + super(ModEntities.ITEM_SCRUBBER.get(), pos, state); + outputSlot = new OutputItemStackHandler(outputItems); + + this.data = new ContainerData() { + + @Override + public int get(int p_39284_) { + return switch(p_39284_){ + case 0 -> ItemScrubberBlockEntity.this.progress; + default -> 0; + }; + } + + @Override + public void set(int p_39285_, int p_39286_) { + switch(p_39285_) + { + case 0 -> ItemScrubberBlockEntity.this.progress = p_39286_; + } + + } + + @Override + public int getCount() { + return 1; + } + + }; + } + + protected final ContainerData data; + private int progress = 0; + + public static final int MAXIMUM_PROCESSING_TICKS = 750; + + + @Override + @Nullable + public AbstractContainerMenu createMenu(int id, Inventory inv, Player player) { + return new ScrubberMenu(id, inv, this, this.data); + } + + @Override + public Component getDisplayName() { + return Component.translatable("block.otemod.item_scrubber"); + } + + @Override + public LazyOptional getCapability(Capability cap, Direction side) + { + if(side == Direction.DOWN && cap == ForgeCapabilities.ITEM_HANDLER) + { + // Return the output slot only + return lazyOutputItems.cast(); + } + if(cap == ForgeCapabilities.ITEM_HANDLER) + { + return lazyItemHandler.cast(); + } + + return super.getCapability(cap,side); + } + + + @Override + public void onLoad() + { + super.onLoad(); + lazyItemHandler = LazyOptional.of(()->itemsHandler); + lazyOutputItems = LazyOptional.of(()->outputSlot); + } + + + @Override + public void invalidateCaps() + { + super.invalidateCaps(); + lazyItemHandler.invalidate(); + lazyOutputItems.invalidate(); + } + + @Override + protected void saveAdditional(CompoundTag nbt) + { + nbt.put("inventory", itemsHandler.serializeNBT()); + nbt.put("output", outputItems.serializeNBT()); + nbt.putInt("prog", progress); + + super.saveAdditional(nbt); + } + + @Override + public void load(CompoundTag nbt){ + super.load(nbt); + + itemsHandler.deserializeNBT(nbt.getCompound("inventory")); + outputItems.deserializeNBT(nbt.getCompound("output")); + progress = nbt.getInt("prog"); + } + + public void doDrop() + { + SimpleContainer cont = new SimpleContainer(itemsHandler.getSlots()); + for (int i = 0; i < itemsHandler.getSlots(); i++) { + cont.setItem(i, itemsHandler.getStackInSlot(i)); + } + cont = new SimpleContainer(outputItems.getSlots()); + for (int i = 0; i < outputItems.getSlots(); i++) { + cont.setItem(i, outputItems.getStackInSlot(i)); + } + + Containers.dropContents(this.level, this.worldPosition, cont); + } + + public static void tick(Level lvl, BlockPos pos, BlockState state, ItemScrubberBlockEntity entity) + { + if(lvl.isClientSide())return; + + if(hasRecipe(entity)) + { + entity.progress++; + setChanged(lvl, pos, state); + + if(entity.progress >= ItemScrubberBlockEntity.MAXIMUM_PROCESSING_TICKS) + { + craftItem(entity); + } + }else { + if(entity.progress>0){ + entity.resetProgress(); + setChanged(lvl, pos, state); + } + } + } + + private static void craftItem(ItemScrubberBlockEntity entity) { + if(hasRecipe(entity)) + { + ItemStack existing = entity.outputItems.getStackInSlot(0); + existing.setCount(existing.getCount()+1); + if(existing.is(Items.AIR)) + { + existing = makeOutputItem(entity.itemsHandler.getStackInSlot(0)); + } + entity.itemsHandler.extractItem(0, 1, false); + entity.outputItems.setStackInSlot(0, existing); + + entity.resetProgress(); + } + } + + private static boolean hasRecipe(ItemScrubberBlockEntity entity) { + SimpleContainer inventory = new SimpleContainer(entity.itemsHandler.getSlots()); + for(int i=0;i existing.getCount()); + boolean sameType = (existing.getItem() == result.getItem()); + boolean outputEmpty = existing.isEmpty(); + + if(outputEmpty)return true; + return (stackCompat && sameType); + } + + private void resetProgress() { + progress=0; + + } + + protected static ItemStack makeOutputItem(ItemStack original) + { + ItemStack newItem = new ItemStack(original.getItem(),1); + return newItem; + } +} diff --git a/src/main/java/dev/zontreck/otemod/blocks/entity/ModEntities.java b/src/main/java/dev/zontreck/otemod/blocks/entity/ModEntities.java new file mode 100644 index 0000000..b87c00d --- /dev/null +++ b/src/main/java/dev/zontreck/otemod/blocks/entity/ModEntities.java @@ -0,0 +1,24 @@ +package dev.zontreck.otemod.blocks.entity; + +import dev.zontreck.otemod.OTEMod; +import dev.zontreck.otemod.blocks.ModBlocks; +import dev.zontreck.otemod.implementation.vault.VaultMenu; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +public class ModEntities { + + public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, OTEMod.MOD_ID); + + public static final RegistryObject > ITEM_SCRUBBER = ENTITIES.register("item_scrubber", ()-> BlockEntityType.Builder.of(ItemScrubberBlockEntity::new, ModBlocks.ITEM_SCRUBBER.get()).build(null)); + + + public static void register(IEventBus eventBus) + { + ENTITIES.register(eventBus); + } +} diff --git a/src/main/java/dev/zontreck/otemod/blocks/types/AlternatePaneBlock.java b/src/main/java/dev/zontreck/otemod/blocks/types/AlternatePaneBlock.java new file mode 100644 index 0000000..b33d2cc --- /dev/null +++ b/src/main/java/dev/zontreck/otemod/blocks/types/AlternatePaneBlock.java @@ -0,0 +1,41 @@ +package dev.zontreck.otemod.blocks.types; + +import java.util.EnumMap; + +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Plane; +import net.minecraft.world.level.block.IronBarsBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BooleanProperty; + +/** Pane block with sensible culling */ +public class AlternatePaneBlock extends IronBarsBlock { + public static final EnumMap DIRECTIONS; + static { + DIRECTIONS = new EnumMap<>(Direction.class); + DIRECTIONS.put(Direction.NORTH, NORTH); + DIRECTIONS.put(Direction.EAST, EAST); + DIRECTIONS.put(Direction.SOUTH, SOUTH); + DIRECTIONS.put(Direction.WEST, WEST); + } + + public AlternatePaneBlock(Properties builder) { + super(builder); + } + + @Override + public boolean skipRendering(BlockState state, BlockState adjacentBlockState, Direction side) { + // cull top and bottom if all props that we have are contained in the above or below + if (adjacentBlockState.getBlock() == this && side.getAxis().isVertical()) { + for (Direction dir : Plane.HORIZONTAL) { + BooleanProperty prop = DIRECTIONS.get(dir); + if (state.getValue(prop) && !adjacentBlockState.getValue(prop)) { + return false; + } + } + return true; + } + return super.skipRendering(state, adjacentBlockState, side); + } + } + \ No newline at end of file diff --git a/src/main/java/dev/zontreck/otemod/commands/vaults/TrashCommand.java b/src/main/java/dev/zontreck/otemod/commands/vaults/TrashCommand.java index 8f4a4bf..855b65a 100644 --- a/src/main/java/dev/zontreck/otemod/commands/vaults/TrashCommand.java +++ b/src/main/java/dev/zontreck/otemod/commands/vaults/TrashCommand.java @@ -2,7 +2,7 @@ package dev.zontreck.otemod.commands.vaults; import com.mojang.brigadier.CommandDispatcher; -import dev.zontreck.otemod.implementation.VaultContainer; +import dev.zontreck.otemod.implementation.vault.VaultContainer; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; diff --git a/src/main/java/dev/zontreck/otemod/commands/vaults/VaultCommand.java b/src/main/java/dev/zontreck/otemod/commands/vaults/VaultCommand.java index ffc349c..08e38a4 100644 --- a/src/main/java/dev/zontreck/otemod/commands/vaults/VaultCommand.java +++ b/src/main/java/dev/zontreck/otemod/commands/vaults/VaultCommand.java @@ -3,7 +3,7 @@ package dev.zontreck.otemod.commands.vaults; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.IntegerArgumentType; -import dev.zontreck.otemod.implementation.VaultContainer; +import dev.zontreck.otemod.implementation.vault.VaultContainer; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; diff --git a/src/main/java/dev/zontreck/otemod/commands/zschem/Place.java b/src/main/java/dev/zontreck/otemod/commands/zschem/Place.java index 600020c..645fb86 100644 --- a/src/main/java/dev/zontreck/otemod/commands/zschem/Place.java +++ b/src/main/java/dev/zontreck/otemod/commands/zschem/Place.java @@ -1,5 +1,6 @@ package dev.zontreck.otemod.commands.zschem; +import java.util.Collections; import java.util.List; import com.mojang.brigadier.CommandDispatcher; @@ -50,6 +51,7 @@ public class Place { Container cont = MemoryHolder.getContainer(play); List blocks = cont.blocks; + Collections.shuffle(blocks); if(cont.Pos1 != OTEMod.ZERO_VECTOR) { diff --git a/src/main/java/dev/zontreck/otemod/commands/zschem/PlaceAsAir.java b/src/main/java/dev/zontreck/otemod/commands/zschem/PlaceAsAir.java index d2e24e1..2f3aa94 100644 --- a/src/main/java/dev/zontreck/otemod/commands/zschem/PlaceAsAir.java +++ b/src/main/java/dev/zontreck/otemod/commands/zschem/PlaceAsAir.java @@ -1,5 +1,6 @@ package dev.zontreck.otemod.commands.zschem; +import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -58,7 +59,9 @@ public class PlaceAsAir { WorldProp system = WorldProp.acquire(cont.lvl); // Begin the process List positions = cont.Pos1.makeCube(cont.Pos2); + Collections.shuffle(positions); Iterator v3 = positions.iterator(); + while(v3.hasNext()) { Vector3 pos = v3.next(); diff --git a/src/main/java/dev/zontreck/otemod/implementation/OutputItemStackHandler.java b/src/main/java/dev/zontreck/otemod/implementation/OutputItemStackHandler.java new file mode 100644 index 0000000..23f97e6 --- /dev/null +++ b/src/main/java/dev/zontreck/otemod/implementation/OutputItemStackHandler.java @@ -0,0 +1,44 @@ +package dev.zontreck.otemod.implementation; + +import net.minecraft.core.NonNullList; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.items.ItemStackHandler; + +public class OutputItemStackHandler extends ItemStackHandler { + private final ItemStackHandler internalSlot; + + public OutputItemStackHandler(ItemStackHandler hidden) { + super(); + internalSlot = hidden; + } + + @Override + public void setSize(int size) { + stacks = NonNullList.withSize(size, ItemStack.EMPTY); + } + + @Override + public void setStackInSlot(int slot, ItemStack stack) { + internalSlot.setStackInSlot(slot, stack); + } + + @Override + public int getSlots() { + return internalSlot.getSlots(); + } + + @Override + public ItemStack getStackInSlot(int slot) { + return internalSlot.getStackInSlot(slot); + } + + @Override + public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + return stack; + } + + @Override + public ItemStack extractItem(int slot, int amount, boolean simulate) { + return internalSlot.extractItem(slot, amount, simulate); + } +} diff --git a/src/main/java/dev/zontreck/otemod/implementation/VaultMenu.java b/src/main/java/dev/zontreck/otemod/implementation/VaultMenu.java deleted file mode 100644 index f1fdf62..0000000 --- a/src/main/java/dev/zontreck/otemod/implementation/VaultMenu.java +++ /dev/null @@ -1,114 +0,0 @@ -package dev.zontreck.otemod.implementation; - -import java.util.Map; -import java.util.UUID; - -import dev.zontreck.otemod.implementation.inits.MenuInitializer; -import net.minecraft.core.BlockPos; -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.AbstractContainerMenu; -import net.minecraft.world.inventory.MenuConstructor; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.SlotItemHandler; - -public class VaultMenu extends AbstractContainerMenu -{ - //private final ContainerLevelAccess containerAccess; - public final UUID VaultMenuID; - - public VaultMenu (int id, Inventory player) - { - this(id, player, new ItemStackHandler(54), BlockPos.ZERO); - } - - public VaultMenu (int id, Inventory player, IItemHandler slots, BlockPos pos) - { - super(MenuInitializer.VAULT.get(), id); - VaultMenuID=UUID.randomUUID(); - //this.containerAccess = ContainerLevelAccess.create(player.player.level, pos); - - final int slotSize = 16; - final int startX = 17; - final int startY = 133; - final int hotbarY = 184; - final int inventoryY = 26; - - for (int row = 0; row < 6; row++) - { - for (int column = 0; column < 9; column++) - { - addSlot(new SlotItemHandler(slots, row*9 + column, startX+column * slotSize , inventoryY + row * slotSize)); - } - } - - for (int row=0;row<3;row++) - { - for(int col = 0; col< 9; col++) - { - addSlot(new Slot(player, 9+row * 9 + col, startX + col * slotSize, startY + row * slotSize)); - } - } - - for(int col = 0; col<9; col++) - { - addSlot(new Slot(player, col, startX + col * slotSize, hotbarY)); - } - } - - @Override - public ItemStack quickMoveStack(Player play, int index) { - ItemStack ret = ItemStack.EMPTY; - final Slot slot = getSlot(index); - boolean moveStack = false; - if(slot.hasItem()){ - final ItemStack item = slot.getItem(); - ret = item.copy(); - - if(index<54) - { - moveStack=moveItemStackTo(item, 54, this.slots.size(), true); - if(!moveStack) return ItemStack.EMPTY; - }else { - moveStack = moveItemStackTo(item, 0, 54, false); - - if(!moveStack)return ItemStack.EMPTY; - } - - - if(item.isEmpty()){ - slot.set(ItemStack.EMPTY); - }else slot.setChanged(); - } - - return ret; - } - - @Override - public boolean stillValid(Player p_38874_) { - return true; // We have no block - } - - public static MenuConstructor getServerMenu (ItemStackHandler inventory){ - return (id, player, play) -> new VaultMenu(id, player, inventory, BlockPos.ZERO); - } - - - public void doCommitAction() - { - - // Locate the Vault in the Vault Registry and commit changes. - // Search for myself! - for(Map.Entry e : VaultContainer.VAULT_REGISTRY.entrySet()) - { - if(e.getValue().VaultID.equals(VaultMenuID)) - { - e.getValue().commit(); - } - } - } - -} diff --git a/src/main/java/dev/zontreck/otemod/implementation/inits/MenuInitializer.java b/src/main/java/dev/zontreck/otemod/implementation/inits/MenuInitializer.java deleted file mode 100644 index 184d214..0000000 --- a/src/main/java/dev/zontreck/otemod/implementation/inits/MenuInitializer.java +++ /dev/null @@ -1,18 +0,0 @@ -package dev.zontreck.otemod.implementation.inits; - -import dev.zontreck.otemod.OTEMod; -import dev.zontreck.otemod.implementation.VaultMenu; -import net.minecraft.world.inventory.MenuType; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; - -public final class MenuInitializer -{ - public static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.MENU_TYPES, OTEMod.MOD_ID); - - public static final RegistryObject > VAULT = CONTAINERS.register("vault", ()-> new MenuType<>(VaultMenu::new)); - - - private MenuInitializer(){} -} diff --git a/src/main/java/dev/zontreck/otemod/implementation/inits/ModMenuTypes.java b/src/main/java/dev/zontreck/otemod/implementation/inits/ModMenuTypes.java new file mode 100644 index 0000000..cc65764 --- /dev/null +++ b/src/main/java/dev/zontreck/otemod/implementation/inits/ModMenuTypes.java @@ -0,0 +1,33 @@ +package dev.zontreck.otemod.implementation.inits; + +import dev.zontreck.otemod.OTEMod; +import dev.zontreck.otemod.implementation.scrubber.ScrubberMenu; +import dev.zontreck.otemod.implementation.vault.VaultMenu; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.MenuType; +import net.minecraftforge.common.extensions.IForgeMenuType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.network.IContainerFactory; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +public final class ModMenuTypes +{ + public static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.MENU_TYPES, OTEMod.MOD_ID); + + public static final RegistryObject > VAULT = CONTAINERS.register("vault", ()-> new MenuType<>(VaultMenu::new)); + + public static final RegistryObject> SCRUBBER = registerMenuType(ScrubberMenu::new, "item_scrubber_menu"); + + + private static RegistryObject> registerMenuType(IContainerFactory factory, String name) + { + return CONTAINERS.register(name, ()->IForgeMenuType.create(factory)); + } + + public static void register(IEventBus bus) + { + CONTAINERS.register(bus); + } +} diff --git a/src/main/java/dev/zontreck/otemod/implementation/scrubber/ScrubberMenu.java b/src/main/java/dev/zontreck/otemod/implementation/scrubber/ScrubberMenu.java new file mode 100644 index 0000000..0829c38 --- /dev/null +++ b/src/main/java/dev/zontreck/otemod/implementation/scrubber/ScrubberMenu.java @@ -0,0 +1,154 @@ +package dev.zontreck.otemod.implementation.scrubber; + +import dev.zontreck.otemod.blocks.ModBlocks; +import dev.zontreck.otemod.blocks.entity.ItemScrubberBlockEntity; +import dev.zontreck.otemod.implementation.inits.ModMenuTypes; +import net.minecraft.core.Direction; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.inventory.SimpleContainerData; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.items.SlotItemHandler; + +public class ScrubberMenu extends AbstractContainerMenu +{ + public final ItemScrubberBlockEntity entity; + private final Level level; + private final ContainerData data; + + public ScrubberMenu(int id, Inventory inv, FriendlyByteBuf buf) + { + this(id, inv, inv.player.level.getBlockEntity(buf.readBlockPos()), new SimpleContainerData(1)); + } + + public ScrubberMenu(int id, Inventory inv, BlockEntity entity, ContainerData data){ + super(ModMenuTypes.SCRUBBER.get(), id); + + checkContainerSize(inv, 1); + this.entity = (ItemScrubberBlockEntity)entity; + this.data=data; + this.level = inv.player.level; + + addPlayerInventory(inv); + addPlayerHotbar(inv); + + this.entity.getCapability(ForgeCapabilities.ITEM_HANDLER, Direction.UP).ifPresent(handler->{ + addSlot(new SlotItemHandler(handler, 0, 16, 41)); + }); + this.entity.getCapability(ForgeCapabilities.ITEM_HANDLER, Direction.DOWN).ifPresent(handler->{ + addSlot(new SlotItemHandler(handler, 0, 177, 41)); + }); + + addDataSlots(data); + + } + + public boolean isCrafting() + { + return data.get(0) > 0; + } + + public int getScaledProgress() + { + if(!isCrafting())return 0; + int progress = this.data.get(0); + int max = ItemScrubberBlockEntity.MAXIMUM_PROCESSING_TICKS; + + int progressArrow = 125; + + + if(progress != 0 && max != 0) + { + int percent = progress * progressArrow / max; + return percent; + } + + return 0; + } + + // CREDIT GOES TO: diesieben07 | https://github.com/diesieben07/SevenCommons + // must assign a slot number to each of the slots used by the GUI. + // For this container, we can see both the tile inventory's slots as well as the player inventory slots and the hotbar. + // Each time we add a Slot to the container, it automatically increases the slotIndex, which means + // 0 - 8 = hotbar slots (which will map to the InventoryPlayer slot numbers 0 - 8) + // 9 - 35 = player inventory slots (which map to the InventoryPlayer slot numbers 9 - 35) + // 36 - 44 = TileInventory slots, which map to our TileEntity slot numbers 0 - 8) + private static final int HOTBAR_SLOT_COUNT = 9; + private static final int PLAYER_INVENTORY_ROW_COUNT = 3; + private static final int PLAYER_INVENTORY_COLUMN_COUNT = 9; + private static final int PLAYER_INVENTORY_SLOT_COUNT = PLAYER_INVENTORY_COLUMN_COUNT * PLAYER_INVENTORY_ROW_COUNT; + private static final int VANILLA_SLOT_COUNT = HOTBAR_SLOT_COUNT + PLAYER_INVENTORY_SLOT_COUNT; + private static final int VANILLA_FIRST_SLOT_INDEX = 0; + private static final int TE_INVENTORY_FIRST_SLOT_INDEX = VANILLA_FIRST_SLOT_INDEX + VANILLA_SLOT_COUNT; + + // THIS YOU HAVE TO DEFINE! + private static final int TE_INVENTORY_SLOT_COUNT = 2; // must be the number of slots you have! + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + Slot sourceSlot = slots.get(index); + if (sourceSlot == null || !sourceSlot.hasItem()) return ItemStack.EMPTY; //EMPTY_ITEM + ItemStack sourceStack = sourceSlot.getItem(); + ItemStack copyOfSourceStack = sourceStack.copy(); + + // Check if the slot clicked is one of the vanilla container slots + if (index < VANILLA_FIRST_SLOT_INDEX + VANILLA_SLOT_COUNT) { + // This is a vanilla container slot so merge the stack into the tile inventory + if (!moveItemStackTo(sourceStack, TE_INVENTORY_FIRST_SLOT_INDEX, TE_INVENTORY_FIRST_SLOT_INDEX + + TE_INVENTORY_SLOT_COUNT, false)) { + return ItemStack.EMPTY; // EMPTY_ITEM + } + } else if (index < TE_INVENTORY_FIRST_SLOT_INDEX + TE_INVENTORY_SLOT_COUNT) { + // This is a TE slot so merge the stack into the players inventory + if (!moveItemStackTo(sourceStack, VANILLA_FIRST_SLOT_INDEX, VANILLA_FIRST_SLOT_INDEX + VANILLA_SLOT_COUNT, false)) { + return ItemStack.EMPTY; + } + } else { + System.out.println("Invalid slotIndex:" + index); + return ItemStack.EMPTY; + } + // If stack size == 0 (the entire stack was moved) set slot contents to null + if (sourceStack.getCount() == 0) { + sourceSlot.set(ItemStack.EMPTY); + } else { + sourceSlot.setChanged(); + } + sourceSlot.onTake(playerIn, sourceStack); + return copyOfSourceStack; + } + + + @Override + public boolean stillValid(Player player) { + return stillValid(ContainerLevelAccess.create(level, entity.getBlockPos()), player, ModBlocks.ITEM_SCRUBBER.get()); + } + + private static final int PLAYER_INVENTORY_FIRST_SLOT_HEIGHT = 69; + private static final int PLAYER_INVENTORY_FIRST_SLOT_LEFT = 24; + private static final int PLAYER_HOTBAR_FIRST_SLOT = 125; + + private void addPlayerInventory(Inventory inv) + { + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 9; j++) { + this.addSlot(new Slot(inv, j+i*9+9, PLAYER_INVENTORY_FIRST_SLOT_LEFT+j*18, PLAYER_INVENTORY_FIRST_SLOT_HEIGHT+i*18)); + } + } + } + + private void addPlayerHotbar(Inventory inv) + { + for (int index = 0; index < 9; index++) { + this.addSlot(new Slot(inv, index, PLAYER_INVENTORY_FIRST_SLOT_LEFT+index*18, PLAYER_HOTBAR_FIRST_SLOT)); + } + } + +} diff --git a/src/main/java/dev/zontreck/otemod/implementation/scrubber/ScrubberScreen.java b/src/main/java/dev/zontreck/otemod/implementation/scrubber/ScrubberScreen.java new file mode 100644 index 0000000..3379974 --- /dev/null +++ b/src/main/java/dev/zontreck/otemod/implementation/scrubber/ScrubberScreen.java @@ -0,0 +1,70 @@ +package dev.zontreck.otemod.implementation.scrubber; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; + +import dev.zontreck.otemod.OTEMod; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Inventory; + +public class ScrubberScreen extends AbstractContainerScreen +{ + private static final ResourceLocation TEXTURE = new ResourceLocation(OTEMod.MOD_ID, "textures/gui/item_scrubber_gui.png"); + + public ScrubberScreen(ScrubberMenu p_97741_, Inventory p_97742_, Component p_97743_) { + super(p_97741_, p_97742_, p_97743_); + + + this.topPos=0; + this.leftPos=0; + + this.imageWidth = 207; + this.imageHeight = 164; + } + + @Override + protected void init() + { + super.init(); + } + + @Override + protected void renderBg(PoseStack poseStack, float partialTick, int mouseX, int mouseY) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, TEXTURE); + + + blit(poseStack, this.leftPos, this.topPos, 0,0, imageWidth, imageHeight); + renderUncraftingProgress(poseStack); + } + + + @Override + protected void renderLabels(PoseStack stack, int mouseX, int mouseY) + { + this.font.draw(stack, this.title.getString(), 63, 12, 0xFFFFFF); + + //this.font.draw(stack, this.playerInventoryTitle.getString(), this.leftPos + 17, this.topPos + 123, 0xFFFFFF); + } + + private void renderUncraftingProgress(PoseStack stack) + { + if(menu.isCrafting()) + { + blit(stack, leftPos+42, topPos+45, 1, 168, menu.getScaledProgress(),6); + } + } + + @Override + public void render(PoseStack stack, int mouseX, int mouseY, float delta) + { + renderBackground(stack); + super.render(stack, mouseX, mouseY, delta); + renderTooltip(stack, mouseX, mouseY); + } + +} diff --git a/src/main/java/dev/zontreck/otemod/implementation/VaultContainer.java b/src/main/java/dev/zontreck/otemod/implementation/vault/VaultContainer.java similarity index 96% rename from src/main/java/dev/zontreck/otemod/implementation/VaultContainer.java rename to src/main/java/dev/zontreck/otemod/implementation/vault/VaultContainer.java index d6708ba..7187e5a 100644 --- a/src/main/java/dev/zontreck/otemod/implementation/VaultContainer.java +++ b/src/main/java/dev/zontreck/otemod/implementation/vault/VaultContainer.java @@ -1,4 +1,4 @@ -package dev.zontreck.otemod.implementation; +package dev.zontreck.otemod.implementation.vault; import java.sql.Connection; import java.sql.PreparedStatement; diff --git a/src/main/java/dev/zontreck/otemod/implementation/vault/VaultMenu.java b/src/main/java/dev/zontreck/otemod/implementation/vault/VaultMenu.java new file mode 100644 index 0000000..1aae203 --- /dev/null +++ b/src/main/java/dev/zontreck/otemod/implementation/vault/VaultMenu.java @@ -0,0 +1,147 @@ +package dev.zontreck.otemod.implementation.vault; + +import java.util.Map; +import java.util.UUID; + +import dev.zontreck.otemod.implementation.inits.ModMenuTypes; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.MenuConstructor; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.SlotItemHandler; + +public class VaultMenu extends AbstractContainerMenu +{ + //private final ContainerLevelAccess containerAccess; + public final UUID VaultMenuID; + + public VaultMenu (int id, Inventory player) + { + this(id, player, new ItemStackHandler(54), BlockPos.ZERO); + } + + public VaultMenu (int id, Inventory player, IItemHandler slots, BlockPos pos) + { + super(ModMenuTypes.VAULT.get(), id); + VaultMenuID=UUID.randomUUID(); + //this.containerAccess = ContainerLevelAccess.create(player.player.level, pos); + + final int slotSize = 18; + final int startX = 24; + final int inventoryY = 38; + + addPlayerInventory(player); + addPlayerHotbar(player); + + + for (int row = 0; row < 6; row++) + { + for (int column = 0; column < 9; column++) + { + addSlot(new SlotItemHandler(slots, row*9 + column, startX+column * slotSize , inventoryY + row * slotSize)); + } + } + } + + // CREDIT GOES TO: diesieben07 | https://github.com/diesieben07/SevenCommons + // must assign a slot number to each of the slots used by the GUI. + // For this container, we can see both the tile inventory's slots as well as the player inventory slots and the hotbar. + // Each time we add a Slot to the container, it automatically increases the slotIndex, which means + // 0 - 8 = hotbar slots (which will map to the InventoryPlayer slot numbers 0 - 8) + // 9 - 35 = player inventory slots (which map to the InventoryPlayer slot numbers 9 - 35) + // 36 - 44 = TileInventory slots, which map to our TileEntity slot numbers 0 - 8) + private static final int HOTBAR_SLOT_COUNT = 9; + private static final int PLAYER_INVENTORY_ROW_COUNT = 3; + private static final int PLAYER_INVENTORY_COLUMN_COUNT = 9; + private static final int PLAYER_INVENTORY_SLOT_COUNT = PLAYER_INVENTORY_COLUMN_COUNT * PLAYER_INVENTORY_ROW_COUNT; + private static final int VANILLA_SLOT_COUNT = HOTBAR_SLOT_COUNT + PLAYER_INVENTORY_SLOT_COUNT; + private static final int VANILLA_FIRST_SLOT_INDEX = 0; + private static final int TE_INVENTORY_FIRST_SLOT_INDEX = VANILLA_FIRST_SLOT_INDEX + VANILLA_SLOT_COUNT; + + // THIS YOU HAVE TO DEFINE! + private static final int TE_INVENTORY_SLOT_COUNT = 54; // must be the number of slots you have! + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + Slot sourceSlot = slots.get(index); + if (sourceSlot == null || !sourceSlot.hasItem()) return ItemStack.EMPTY; //EMPTY_ITEM + ItemStack sourceStack = sourceSlot.getItem(); + ItemStack copyOfSourceStack = sourceStack.copy(); + + // Check if the slot clicked is one of the vanilla container slots + if (index < VANILLA_FIRST_SLOT_INDEX + VANILLA_SLOT_COUNT) { + // This is a vanilla container slot so merge the stack into the tile inventory + if (!moveItemStackTo(sourceStack, TE_INVENTORY_FIRST_SLOT_INDEX, TE_INVENTORY_FIRST_SLOT_INDEX + + TE_INVENTORY_SLOT_COUNT, false)) { + return ItemStack.EMPTY; // EMPTY_ITEM + } + } else if (index < TE_INVENTORY_FIRST_SLOT_INDEX + TE_INVENTORY_SLOT_COUNT) { + // This is a TE slot so merge the stack into the players inventory + if (!moveItemStackTo(sourceStack, VANILLA_FIRST_SLOT_INDEX, VANILLA_FIRST_SLOT_INDEX + VANILLA_SLOT_COUNT, false)) { + return ItemStack.EMPTY; + } + } else { + System.out.println("Invalid slotIndex:" + index); + return ItemStack.EMPTY; + } + // If stack size == 0 (the entire stack was moved) set slot contents to null + if (sourceStack.getCount() == 0) { + sourceSlot.set(ItemStack.EMPTY); + } else { + sourceSlot.setChanged(); + } + sourceSlot.onTake(playerIn, sourceStack); + return copyOfSourceStack; + } + + @Override + public boolean stillValid(Player p_38874_) { + return true; // We have no block + } + + public static MenuConstructor getServerMenu (ItemStackHandler inventory){ + return (id, player, play) -> new VaultMenu(id, player, inventory, BlockPos.ZERO); + } + + + public void doCommitAction() + { + + // Locate the Vault in the Vault Registry and commit changes. + // Search for myself! + for(Map.Entry e : VaultContainer.VAULT_REGISTRY.entrySet()) + { + if(e.getValue().VaultID.equals(VaultMenuID)) + { + e.getValue().commit(); + } + } + } + + + private static final int PLAYER_INVENTORY_FIRST_SLOT_HEIGHT = 156; + private static final int PLAYER_INVENTORY_FIRST_SLOT_LEFT = 24; + private static final int PLAYER_HOTBAR_FIRST_SLOT = 212; + + private void addPlayerInventory(Inventory inv) + { + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 9; j++) { + this.addSlot(new Slot(inv, j+i*9+9, PLAYER_INVENTORY_FIRST_SLOT_LEFT+j*18, PLAYER_INVENTORY_FIRST_SLOT_HEIGHT+i*18)); + } + } + } + + private void addPlayerHotbar(Inventory inv) + { + for (int index = 0; index < 9; index++) { + this.addSlot(new Slot(inv, index, PLAYER_INVENTORY_FIRST_SLOT_LEFT+index*18, PLAYER_HOTBAR_FIRST_SLOT)); + } + } + +} diff --git a/src/main/java/dev/zontreck/otemod/implementation/VaultScreen.java b/src/main/java/dev/zontreck/otemod/implementation/vault/VaultScreen.java similarity index 84% rename from src/main/java/dev/zontreck/otemod/implementation/VaultScreen.java rename to src/main/java/dev/zontreck/otemod/implementation/vault/VaultScreen.java index eac23eb..4bdfdfe 100644 --- a/src/main/java/dev/zontreck/otemod/implementation/VaultScreen.java +++ b/src/main/java/dev/zontreck/otemod/implementation/vault/VaultScreen.java @@ -1,4 +1,4 @@ -package dev.zontreck.otemod.implementation; +package dev.zontreck.otemod.implementation.vault; import java.util.UUID; @@ -26,8 +26,8 @@ public class VaultScreen extends AbstractContainerScreen this.leftPos = 0; this.topPos = 0; - this.imageWidth = 176; - this.imageHeight = 224; + this.imageWidth = 207; + this.imageHeight = 238; } @Override @@ -37,13 +37,13 @@ public class VaultScreen extends AbstractContainerScreen super.render(stack, mouseX, mouseY, partialTicks); this.renderTooltip(stack, mouseX, mouseY); - this.font.draw(stack, this.title, this.leftPos + 17, this.topPos + 15, 0xFFFFFF); - this.font.draw(stack, this.playerInventoryTitle, this.leftPos + 17, this.topPos + 123, 0xFFFFFF); } @Override protected void renderLabels(PoseStack stack, int mouseX, int mouseY) { + this.font.draw(stack, this.title, 63, 12, 0xFFFFFF); + this.font.draw(stack, this.playerInventoryTitle, 63, 146, 0xFFFFFF); //this.font.draw(stack, this.title.getString(), this.leftPos + 17, this.topPos + 15, 0xFFFFFF); //this.font.draw(stack, this.playerInventoryTitle.getString(), this.leftPos + 17, this.topPos + 123, 0xFFFFFF); diff --git a/src/main/java/dev/zontreck/otemod/implementation/VaultWatcher.java b/src/main/java/dev/zontreck/otemod/implementation/vault/VaultWatcher.java similarity index 84% rename from src/main/java/dev/zontreck/otemod/implementation/VaultWatcher.java rename to src/main/java/dev/zontreck/otemod/implementation/vault/VaultWatcher.java index 1fe4f2d..ba1bb05 100644 --- a/src/main/java/dev/zontreck/otemod/implementation/VaultWatcher.java +++ b/src/main/java/dev/zontreck/otemod/implementation/vault/VaultWatcher.java @@ -1,11 +1,9 @@ -package dev.zontreck.otemod.implementation; +package dev.zontreck.otemod.implementation.vault; import java.util.Map; import java.util.UUID; import dev.zontreck.otemod.OTEMod; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.event.entity.player.PlayerContainerEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -14,11 +12,10 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber; @EventBusSubscriber(modid=OTEMod.MOD_ID,bus=Mod.EventBusSubscriber.Bus.FORGE) public class VaultWatcher { - - @OnlyIn(Dist.DEDICATED_SERVER) @SubscribeEvent public void onClosedContainer(PlayerContainerEvent.Close ev) { + if(ev.getEntity().level.isClientSide)return; //OTEMod.LOGGER.info("Player closed a container"); // Player closed the container // Check if it is a vault Container diff --git a/src/main/java/dev/zontreck/otemod/items/ModItems.java b/src/main/java/dev/zontreck/otemod/items/ModItems.java index 35556c6..03ac2c3 100644 --- a/src/main/java/dev/zontreck/otemod/items/ModItems.java +++ b/src/main/java/dev/zontreck/otemod/items/ModItems.java @@ -22,6 +22,13 @@ public class ModItems { public static final RegistryObject ETERNIUM_RAW_ORE = ITEMS.register("eternium_ore", () -> new Item(new Item.Properties().tab(CreativeModeTab.TAB_MISC))); + public static final RegistryObject RAW_COBALT = ITEMS.register("raw_cobalt", () -> new Item(new Item.Properties().tab(CreativeModeTab.TAB_MISC))); + public static final RegistryObject COBALT_NUGGET = ITEMS.register("cobalt_nugget", () -> new Item(new Item.Properties().tab(CreativeModeTab.TAB_MISC))); + public static final RegistryObject COBALT_INGOT = ITEMS.register("cobalt_ingot", () -> new Item(new Item.Properties().tab(CreativeModeTab.TAB_MISC))); + public static final RegistryObject PATTERN = ITEMS.register("pattern", () -> new Item(new Item.Properties().tab(CreativeModeTab.TAB_MISC))); + public static final RegistryObject SCORCHED_BRICK = ITEMS.register("scorched_brick", () -> new Item(new Item.Properties().tab(CreativeModeTab.TAB_MISC))); + public static final RegistryObject COPPER_CAN = ITEMS.register("copper_can", () -> new Item(new Item.Properties().tab(CreativeModeTab.TAB_MISC).stacksTo(16))); + public static void register(IEventBus bus){ ITEMS.register(bus); diff --git a/src/main/java/dev/zontreck/otemod/recipes/ModRecipes.java b/src/main/java/dev/zontreck/otemod/recipes/ModRecipes.java new file mode 100644 index 0000000..edcbf3d --- /dev/null +++ b/src/main/java/dev/zontreck/otemod/recipes/ModRecipes.java @@ -0,0 +1,5 @@ +package dev.zontreck.otemod.recipes; + +public class ModRecipes { + +} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 60c229d..3266af9 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -19,9 +19,9 @@ modId="otemod" #mandatory # The version number of the mod - there's a few well known ${} variables useable here or just hardcode it # ${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata # see the associated build.gradle script for how to populate this completely automatically during a build -version="1.3.5.6" #mandatory +version="1.3.6.1" #mandatory # A display name for the mod -displayName="OTEMod Resources" #mandatory +displayName="OTEMod" #mandatory # A URL to query for updates for this mod. See the JSON update specification https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/ #updateJSONURL="https://change.me.example.invalid/updates.json" #optional # A URL for the "homepage" for this mod, displayed in the mod UI diff --git a/src/main/resources/assets/otemod/blockstates/cobalt_block.json b/src/main/resources/assets/otemod/blockstates/cobalt_block.json new file mode 100644 index 0000000..38ff815 --- /dev/null +++ b/src/main/resources/assets/otemod/blockstates/cobalt_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "otemod:block/cobalt_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/blockstates/cobalt_ore.json b/src/main/resources/assets/otemod/blockstates/cobalt_ore.json new file mode 100644 index 0000000..07756b1 --- /dev/null +++ b/src/main/resources/assets/otemod/blockstates/cobalt_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "otemod:block/cobalt_ore" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/blockstates/gold_bars.json b/src/main/resources/assets/otemod/blockstates/gold_bars.json new file mode 100644 index 0000000..a24f457 --- /dev/null +++ b/src/main/resources/assets/otemod/blockstates/gold_bars.json @@ -0,0 +1,43 @@ +{ + "multipart": [ + { + "apply": { "model": "otemod:block/gold_bars/post_ends" } + }, + { + "when": { "north": "false", "west": "false", "south": "false", "east": "false" }, + "apply": { "model": "otemod:block/gold_bars/post" } + }, + { + "when": { "north": "true", "west": "false", "south": "false", "east": "false" }, + "apply": { "model": "otemod:block/gold_bars/cap" } + }, + { + "when": { "north": "false", "west": "false", "south": "false", "east": "true" }, + "apply": { "model": "otemod:block/gold_bars/cap", "y": 90 } + }, + { + "when": { "north": "false", "west": "false", "south": "true", "east": "false" }, + "apply": { "model": "otemod:block/gold_bars/cap_alt" } + }, + { + "when": { "north": "false", "west": "true", "south": "false", "east": "false" }, + "apply": { "model": "otemod:block/gold_bars/cap_alt", "y": 90 } + }, + { + "when": { "north": "true" }, + "apply": { "model": "otemod:block/gold_bars/side" } + }, + { + "when": { "east": "true" }, + "apply": { "model": "otemod:block/gold_bars/side", "y": 90 } + }, + { + "when": { "south": "true" }, + "apply": { "model": "otemod:block/gold_bars/side_alt" } + }, + { + "when": { "west": "true" }, + "apply": { "model": "otemod:block/gold_bars/side_alt", "y": 90 } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/blockstates/item_scrubber.json b/src/main/resources/assets/otemod/blockstates/item_scrubber.json new file mode 100644 index 0000000..e41f764 --- /dev/null +++ b/src/main/resources/assets/otemod/blockstates/item_scrubber.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "otemod:block/item_scrubber" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/blockstates/nether_grout.json b/src/main/resources/assets/otemod/blockstates/nether_grout.json new file mode 100644 index 0000000..007e5fd --- /dev/null +++ b/src/main/resources/assets/otemod/blockstates/nether_grout.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "otemod:block/nether_grout" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/blockstates/raw_cobalt_ore.json b/src/main/resources/assets/otemod/blockstates/raw_cobalt_ore.json new file mode 100644 index 0000000..7415438 --- /dev/null +++ b/src/main/resources/assets/otemod/blockstates/raw_cobalt_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "otemod:block/raw_cobalt_ore" + } + } +} diff --git a/src/main/resources/assets/otemod/blockstates/scorched_table.json b/src/main/resources/assets/otemod/blockstates/scorched_table.json new file mode 100644 index 0000000..11dfcf1 --- /dev/null +++ b/src/main/resources/assets/otemod/blockstates/scorched_table.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "otemod:block/scorched_table" }, + "facing=south": { "model": "otemod:block/scorched_table", "y": 180 }, + "facing=west": { "model": "otemod:block/scorched_table", "y": 270 }, + "facing=east": { "model": "otemod:block/scorched_table", "y": 90 } + } +} diff --git a/src/main/resources/assets/otemod/icon.png b/src/main/resources/assets/otemod/icon.png deleted file mode 100644 index 812932a..0000000 Binary files a/src/main/resources/assets/otemod/icon.png and /dev/null differ diff --git a/src/main/resources/assets/otemod/lang/en_us.json b/src/main/resources/assets/otemod/lang/en_us.json index d3177e5..4a6a622 100644 --- a/src/main/resources/assets/otemod/lang/en_us.json +++ b/src/main/resources/assets/otemod/lang/en_us.json @@ -12,12 +12,25 @@ "item.otemod.eternium_fragment": "Fragmented Eternium", "item.otemod.eternium_dust": "Eternium Dust", "item.otemod.aurora_compound": "Aurora Compound", + "item.otemod.raw_cobalt": "Raw Cobalt", + "item.otemod.cobalt_nugget": "Cobalt Nugget", + "item.otemod.cobalt_ingot": "Cobalt Ingot", + "item.otemod.pattern": "Pattern", + "item.otemod.scorched_brick": "Scorched Brick", + "item.otemod.copper_can": "Copper Can", "block.otemod.eternium_ore_block": "Eternium Ore", "block.otemod.deepslate_eternium_ore_block": "Deepslate Eternium Ore", "block.otemod.aurora_block": "Aurora Block", "block.otemod.aurora_door": "Aurora Door", "block.otemod.clear_glass_block": "Clear Glass Block", + "block.otemod.cobalt_ore": "Cobalt Ore", + "block.otemod.raw_cobalt_ore": "Raw Cobalt Ore", + "block.otemod.gold_bars": "Gold Bars", + "block.otemod.cobalt_block": "Cobalt", + "block.otemod.nether_grout": "Nether Grout", + "block.otemod.scorched_table": "Scorched Table", + "block.otemod.item_scrubber": "Item Scrubber", "dev.zontreck.otemod.msgs.only_player": "§cOnly players are allowed to execute this command", @@ -27,9 +40,5 @@ "dev.zontreck.otemod.msgs.warps.set.success": "Warp successfully created", "dev.zontreck.otemod.msgs.warps.del.success": "Warp successfully deleted", "dev.zontreck.otemod.msgs.warps.set.fail": "Failed to create warp", - "dev.zontreck.otemod.msgs.warps.del.fail": "Failed to delete warp", - - "minecraft.player.joined": "", - "minecraft.player.joined.renamed": "", - "minecraft.player.quit": "" + "dev.zontreck.otemod.msgs.warps.del.fail": "Failed to delete warp" } \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/block/cobalt_block.json b/src/main/resources/assets/otemod/models/block/cobalt_block.json new file mode 100644 index 0000000..6cb58cd --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/cobalt_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "otemod:block/cobalt_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/block/cobalt_ore.json b/src/main/resources/assets/otemod/models/block/cobalt_ore.json new file mode 100644 index 0000000..8590da0 --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/cobalt_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "otemod:block/cobalt_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/block/gold_bars/cap.json b/src/main/resources/assets/otemod/models/block/gold_bars/cap.json new file mode 100644 index 0000000..a34b499 --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/gold_bars/cap.json @@ -0,0 +1,9 @@ +{ + "parent": "block/iron_bars_cap", + "render_type": "minecraft:translucent", + "textures": { + "particle": "otemod:block/gold_bars", + "bars": "otemod:block/gold_bars", + "edge": "otemod:block/gold_bars" + } +} diff --git a/src/main/resources/assets/otemod/models/block/gold_bars/cap_alt.json b/src/main/resources/assets/otemod/models/block/gold_bars/cap_alt.json new file mode 100644 index 0000000..b5b0bcf --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/gold_bars/cap_alt.json @@ -0,0 +1,9 @@ +{ + "parent": "block/iron_bars_cap_alt", + "render_type": "minecraft:translucent", + "textures": { + "particle": "otemod:block/gold_bars", + "bars": "otemod:block/gold_bars", + "edge": "otemod:block/gold_bars" + } +} diff --git a/src/main/resources/assets/otemod/models/block/gold_bars/post.json b/src/main/resources/assets/otemod/models/block/gold_bars/post.json new file mode 100644 index 0000000..1772a6f --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/gold_bars/post.json @@ -0,0 +1,8 @@ +{ + "parent": "block/iron_bars_post", + "render_type": "minecraft:translucent", + "textures": { + "particle": "otemod:block/gold_bars", + "bars": "otemod:block/gold_bars" + } +} diff --git a/src/main/resources/assets/otemod/models/block/gold_bars/post_ends.json b/src/main/resources/assets/otemod/models/block/gold_bars/post_ends.json new file mode 100644 index 0000000..66602c4 --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/gold_bars/post_ends.json @@ -0,0 +1,8 @@ +{ + "parent": "block/iron_bars_post_ends", + "render_type": "minecraft:translucent", + "textures": { + "particle": "otemod:block/gold_bars", + "edge": "otemod:block/gold_bars" + } +} diff --git a/src/main/resources/assets/otemod/models/block/gold_bars/side.json b/src/main/resources/assets/otemod/models/block/gold_bars/side.json new file mode 100644 index 0000000..bf66bdb --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/gold_bars/side.json @@ -0,0 +1,9 @@ +{ + "parent": "block/iron_bars_side", + "render_type": "minecraft:translucent", + "textures": { + "particle": "otemod:block/gold_bars", + "bars": "otemod:block/gold_bars", + "edge": "otemod:block/gold_bars" + } +} diff --git a/src/main/resources/assets/otemod/models/block/gold_bars/side_alt.json b/src/main/resources/assets/otemod/models/block/gold_bars/side_alt.json new file mode 100644 index 0000000..ca4fbbe --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/gold_bars/side_alt.json @@ -0,0 +1,9 @@ +{ + "parent": "block/iron_bars_side_alt", + "render_type": "minecraft:translucent", + "textures": { + "particle": "otemod:block/gold_bars", + "bars": "otemod:block/gold_bars", + "edge": "otemod:block/gold_bars" + } +} diff --git a/src/main/resources/assets/otemod/models/block/item_scrubber.json b/src/main/resources/assets/otemod/models/block/item_scrubber.json new file mode 100644 index 0000000..36a695a --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/item_scrubber.json @@ -0,0 +1,269 @@ +{ + "credit": "Made with Blockbench", + "render_type": "minecraft:translucent", + "textures": { + "0": "otemod:block/scrubber/scrubber_top" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [2, 2, 2], + "color": 2, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#0"} + } + }, + { + "from": [0, 0, 14], + "to": [2, 2, 16], + "color": 2, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#0"} + } + }, + { + "from": [0, 10, 0], + "to": [2, 12, 2], + "color": 2, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#0"} + } + }, + { + "from": [0, 10, 14], + "to": [2, 12, 16], + "color": 2, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#0"} + } + }, + { + "from": [0, 2, 0], + "to": [1, 10, 1], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#0"} + } + }, + { + "from": [0, 2, 15], + "to": [1, 10, 16], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#0"} + } + }, + { + "from": [0, 0, 2], + "to": [1, 1, 14], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 12], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 12], "texture": "#0"} + } + }, + { + "from": [0, 11, 2], + "to": [1, 12, 14], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 12], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 12], "texture": "#0"} + } + }, + { + "from": [14, 0, 14], + "to": [16, 2, 16], + "color": 2, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [14, 0, 0], + "to": [16, 2, 2], + "color": 2, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [14, 10, 14], + "to": [16, 12, 16], + "color": 2, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [14, 10, 0], + "to": [16, 12, 2], + "color": 2, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [15, 2, 15], + "to": [16, 10, 16], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 1], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 1, 1], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [2, 0, 15], + "to": [14, 1, 16], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 12, 1], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 12, 1], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [2, 11, 15], + "to": [14, 12, 16], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 12, 1], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 12, 1], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [2, 11, 0], + "to": [14, 12, 1], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 12, 1], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 12, 1], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [2, 0, 0], + "to": [14, 1, 1], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 12, 1], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 12, 1], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [15, 2, 0], + "to": [16, 10, 1], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 1], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 1, 1], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [15, 0, 2], + "to": [16, 1, 14], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 12], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 1, 12], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [15, 11, 2], + "to": [16, 12, 14], + "color": 7, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 12], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 1, 12], "rotation": 180, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/block/item_scrubber.json.old b/src/main/resources/assets/otemod/models/block/item_scrubber.json.old new file mode 100644 index 0000000..20d1dbf --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/item_scrubber.json.old @@ -0,0 +1,12 @@ +{ + "parent": "minecraft:block/cube", + "textures": { + "down": "otemod:block/scrubber/scrubber_bottom", + "up": "otemod:block/scrubber/scrubber_top", + "south": "otemod:block/scrubber/scrubber_front", + "west": "otemod:block/scrubber/scrubber_left", + "north": "otemod:block/scrubber/scrubber_back", + "east": "otemod:block/scrubber/scrubber_right" + } + } + \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/block/nether_grout.json b/src/main/resources/assets/otemod/models/block/nether_grout.json new file mode 100644 index 0000000..a70ab3d --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/nether_grout.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "otemod:block/nether_grout" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/block/raw_cobalt_ore.json b/src/main/resources/assets/otemod/models/block/raw_cobalt_ore.json new file mode 100644 index 0000000..d51383c --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/raw_cobalt_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "otemod:block/raw_cobalt_ore" + } +} diff --git a/src/main/resources/assets/otemod/models/block/scorched_table.json b/src/main/resources/assets/otemod/models/block/scorched_table.json new file mode 100644 index 0000000..7f62e2f --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/scorched_table.json @@ -0,0 +1,8 @@ +{ + "parent": "otemod:block/template/table", + "textures": { + "side": "otemod:block/scorched_table/table_side", + "top": "otemod:block/scorched_table/table_top", + "bottom": "otemod:block/scorched_table/table_bottom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/block/template/table.json b/src/main/resources/assets/otemod/models/block/template/table.json new file mode 100644 index 0000000..7a8cee9 --- /dev/null +++ b/src/main/resources/assets/otemod/models/block/template/table.json @@ -0,0 +1,114 @@ +{ + "loader": "otemod:casting", + "parent": "block/block", + "textures": { + "particle": "#side" + }, + "elements": [ + { + "name": "Table outer", + "from": [ 0, 10, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "north": { "texture": "#side", "cullface": "north" }, + "east": { "texture": "#side", "cullface": "east" }, + "south": { "texture": "#side", "cullface": "south" }, + "west": { "texture": "#side", "cullface": "west" }, + "down": { "texture": "#bottom" } + } + }, + { + "name": "Table inner", + "from": [ 15, 16, 15 ], + "to": [ 1, 15, 1 ], + "faces": { + "north": { "texture": "#side", "cullface": "up" }, + "east": { "texture": "#side", "cullface": "up" }, + "south": { "texture": "#side", "cullface": "up" }, + "west": { "texture": "#side", "cullface": "up" }, + "up": { "texture": "#top", "cullface": "up" } + } + }, + { + "name": "Northwest leg", + "from": [ 0, 0, 0] , + "to": [ 4, 10, 4 ], + "faces": { + "north": { "texture": "#side", "cullface": "north" }, + "east": { "texture": "#side" }, + "south": { "texture": "#side" }, + "west": { "texture": "#side", "cullface": "west" }, + "down": { "texture": "#bottom", "cullface": "down" } + } + }, + { + "name": "Northeast leg", + "from": [ 12, 0, 0 ], + "to": [ 16, 10, 4 ], + "faces": { + "north": { "texture": "#side", "cullface": "north" }, + "east": { "texture": "#side", "cullface": "east" }, + "south": { "texture": "#side"}, + "west": { "texture": "#side"}, + "down": { "texture": "#bottom", "cullface": "down" } + } + }, + { + "name": "Southeast leg", + "from": [ 12, 0, 12 ], + "to": [ 16, 10, 16 ], + "faces": { + "north": { "texture": "#side" }, + "east": { "texture": "#side", "cullface": "east" }, + "south": { "texture": "#side", "cullface": "south" }, + "west": { "texture": "#side" }, + "down": { "texture": "#bottom", "cullface": "down" } + } + }, + { + "name": "Southwest leg", + "from": [ 0, 0, 12 ], + "to": [ 4, 10, 16 ], + "faces": { + "north": { "texture": "#side" }, + "east": { "texture": "#side" }, + "south": { "texture": "#side", "cullface": "south" }, + "west": { "texture": "#side", "cullface": "west" }, + "down": { "texture": "#bottom", "cullface": "down" } + } + }, + { + "name": "West top edge", + "from": [ 0, 16, 0 ], + "to": [ 1, 16, 16 ], + "faces": { "up": { "texture": "#top", "cullface": "up" }} + }, + { + "name": "East top edge", + "from": [ 15, 16, 0 ], + "to": [ 16, 16, 16 ], + "faces": { "up": { "texture": "#top", "cullface": "up" }} + }, + { + "name": "North top edge", + "from": [ 1, 16, 0 ], + "to": [ 15, 16, 1 ], + "faces": { "up": { "texture": "#top", "cullface": "up" }} + }, + { + "name": "South top edge", + "from": [ 1, 16, 15 ], + "to": [ 15, 16, 16 ], + "faces": { "up": { "texture": "#top", "cullface": "up" }} + } + ], + "fluid": { + "from": [ 1, 15, 1 ], + "to": [ 15, 15.9, 15 ], + "faces": { "up": {} } + }, + "items": [ + { "center": [ 8, 15.5, 8 ], "size": 14, "x": 270, "y": 180, "transform": "fixed" }, + { "center": [ 8, 15.5, 8 ], "size": 14.1, "x": 270, "y": 180, "transform": "fixed" } + ] +} diff --git a/src/main/resources/assets/otemod/models/item/cobalt_block.json b/src/main/resources/assets/otemod/models/item/cobalt_block.json new file mode 100644 index 0000000..96dcb47 --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/cobalt_block.json @@ -0,0 +1,3 @@ +{ + "parent": "otemod:block/cobalt_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/item/cobalt_ingot.json b/src/main/resources/assets/otemod/models/item/cobalt_ingot.json new file mode 100644 index 0000000..5e38bda --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/cobalt_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "otemod:item/cobalt_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/item/cobalt_nugget.json b/src/main/resources/assets/otemod/models/item/cobalt_nugget.json new file mode 100644 index 0000000..4fb656c --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/cobalt_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "otemod:item/cobalt_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/item/cobalt_ore.json b/src/main/resources/assets/otemod/models/item/cobalt_ore.json new file mode 100644 index 0000000..62affcb --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/cobalt_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "otemod:block/cobalt_ore" +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/item/gold_bars.json b/src/main/resources/assets/otemod/models/item/gold_bars.json new file mode 100644 index 0000000..e6b0bce --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/gold_bars.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "otemod:block/gold_bars" + } +} diff --git a/src/main/resources/assets/otemod/models/item/item_scrubber.json b/src/main/resources/assets/otemod/models/item/item_scrubber.json new file mode 100644 index 0000000..0ecb72f --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/item_scrubber.json @@ -0,0 +1,3 @@ +{ + "parent": "otemod:block/item_scrubber" +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/item/nether_grout.json b/src/main/resources/assets/otemod/models/item/nether_grout.json new file mode 100644 index 0000000..cc813cd --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/nether_grout.json @@ -0,0 +1,3 @@ +{ + "parent": "otemod:block/nether_grout" +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/item/pattern.json b/src/main/resources/assets/otemod/models/item/pattern.json new file mode 100644 index 0000000..1cbc47e --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/pattern.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "otemod:item/pattern" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/item/raw_cobalt.json b/src/main/resources/assets/otemod/models/item/raw_cobalt.json new file mode 100644 index 0000000..76dec7a --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/raw_cobalt.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "otemod:item/raw_cobalt" + } +} diff --git a/src/main/resources/assets/otemod/models/item/raw_cobalt_ore.json b/src/main/resources/assets/otemod/models/item/raw_cobalt_ore.json new file mode 100644 index 0000000..a68bb52 --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/raw_cobalt_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "otemod:block/raw_cobalt_ore" +} diff --git a/src/main/resources/assets/otemod/models/item/scorched_brick.json b/src/main/resources/assets/otemod/models/item/scorched_brick.json new file mode 100644 index 0000000..85588cb --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/scorched_brick.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "otemod:item/scorched_brick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/otemod/models/item/scorched_table.json b/src/main/resources/assets/otemod/models/item/scorched_table.json new file mode 100644 index 0000000..b187b51 --- /dev/null +++ b/src/main/resources/assets/otemod/models/item/scorched_table.json @@ -0,0 +1,3 @@ +{ + "parent": "otemod:block/scorched_table" +} diff --git a/src/main/resources/assets/otemod/textures/block/cobalt_block.png b/src/main/resources/assets/otemod/textures/block/cobalt_block.png new file mode 100644 index 0000000..3598330 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/cobalt_block.png differ diff --git a/src/main/resources/assets/otemod/textures/block/cobalt_ore.png b/src/main/resources/assets/otemod/textures/block/cobalt_ore.png new file mode 100644 index 0000000..16e2ed9 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/cobalt_ore.png differ diff --git a/src/main/resources/assets/otemod/textures/block/gold_bars.png b/src/main/resources/assets/otemod/textures/block/gold_bars.png new file mode 100644 index 0000000..2ab8c66 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/gold_bars.png differ diff --git a/src/main/resources/assets/otemod/textures/block/nether_grout.png b/src/main/resources/assets/otemod/textures/block/nether_grout.png new file mode 100644 index 0000000..35ffbcd Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/nether_grout.png differ diff --git a/src/main/resources/assets/otemod/textures/block/raw_cobalt_ore.png b/src/main/resources/assets/otemod/textures/block/raw_cobalt_ore.png new file mode 100644 index 0000000..3b14cfb Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/raw_cobalt_ore.png differ diff --git a/src/main/resources/assets/otemod/textures/block/scorched_table/table_bottom.png b/src/main/resources/assets/otemod/textures/block/scorched_table/table_bottom.png new file mode 100644 index 0000000..652d92b Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/scorched_table/table_bottom.png differ diff --git a/src/main/resources/assets/otemod/textures/block/scorched_table/table_side.png b/src/main/resources/assets/otemod/textures/block/scorched_table/table_side.png new file mode 100644 index 0000000..5bd30de Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/scorched_table/table_side.png differ diff --git a/src/main/resources/assets/otemod/textures/block/scorched_table/table_top.png b/src/main/resources/assets/otemod/textures/block/scorched_table/table_top.png new file mode 100644 index 0000000..395b4c1 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/scorched_table/table_top.png differ diff --git a/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_back.png b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_back.png new file mode 100644 index 0000000..20a46d9 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_back.png differ diff --git a/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_bottom.png b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_bottom.png new file mode 100644 index 0000000..900cb03 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_bottom.png differ diff --git a/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_front.png b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_front.png new file mode 100644 index 0000000..e40856c Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_front.png differ diff --git a/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_left.png b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_left.png new file mode 100644 index 0000000..e956925 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_left.png differ diff --git a/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_right.png b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_right.png new file mode 100644 index 0000000..2ef7cdf Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_right.png differ diff --git a/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_top.png b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_top.png new file mode 100644 index 0000000..e99c59a Binary files /dev/null and b/src/main/resources/assets/otemod/textures/block/scrubber/scrubber_top.png differ diff --git a/src/main/resources/assets/otemod/textures/gui/item_scrubber_gui.png b/src/main/resources/assets/otemod/textures/gui/item_scrubber_gui.png new file mode 100644 index 0000000..41febc5 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/gui/item_scrubber_gui.png differ diff --git a/src/main/resources/assets/otemod/textures/gui/vault.png b/src/main/resources/assets/otemod/textures/gui/vault.png index ea6861b..d43873a 100644 Binary files a/src/main/resources/assets/otemod/textures/gui/vault.png and b/src/main/resources/assets/otemod/textures/gui/vault.png differ diff --git a/src/main/resources/assets/otemod/textures/gui/vaultmenu.aseprite b/src/main/resources/assets/otemod/textures/gui/vaultmenu.aseprite index 9da8453..6fae224 100644 Binary files a/src/main/resources/assets/otemod/textures/gui/vaultmenu.aseprite and b/src/main/resources/assets/otemod/textures/gui/vaultmenu.aseprite differ diff --git a/src/main/resources/assets/otemod/textures/item/cobalt_ingot.png b/src/main/resources/assets/otemod/textures/item/cobalt_ingot.png new file mode 100644 index 0000000..d92f5b2 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/item/cobalt_ingot.png differ diff --git a/src/main/resources/assets/otemod/textures/item/cobalt_nugget.png b/src/main/resources/assets/otemod/textures/item/cobalt_nugget.png new file mode 100644 index 0000000..48d6737 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/item/cobalt_nugget.png differ diff --git a/src/main/resources/assets/otemod/textures/item/copper_can.png b/src/main/resources/assets/otemod/textures/item/copper_can.png new file mode 100644 index 0000000..dc1bc54 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/item/copper_can.png differ diff --git a/src/main/resources/assets/otemod/textures/item/copper_can_fluid.png b/src/main/resources/assets/otemod/textures/item/copper_can_fluid.png new file mode 100644 index 0000000..421f282 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/item/copper_can_fluid.png differ diff --git a/src/main/resources/assets/otemod/textures/item/pattern.png b/src/main/resources/assets/otemod/textures/item/pattern.png new file mode 100644 index 0000000..0816772 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/item/pattern.png differ diff --git a/src/main/resources/assets/otemod/textures/item/raw_cobalt.png b/src/main/resources/assets/otemod/textures/item/raw_cobalt.png new file mode 100644 index 0000000..9b970af Binary files /dev/null and b/src/main/resources/assets/otemod/textures/item/raw_cobalt.png differ diff --git a/src/main/resources/assets/otemod/textures/item/scorched_brick.png b/src/main/resources/assets/otemod/textures/item/scorched_brick.png new file mode 100644 index 0000000..fd50ea5 Binary files /dev/null and b/src/main/resources/assets/otemod/textures/item/scorched_brick.png differ diff --git a/src/main/resources/data/forge/tags/blocks/ore_rates/singular.json b/src/main/resources/data/forge/tags/blocks/ore_rates/singular.json new file mode 100644 index 0000000..3c9cc35 --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/ore_rates/singular.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:cobalt_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/ores.json b/src/main/resources/data/forge/tags/blocks/ores.json new file mode 100644 index 0000000..37d8144 --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/ores.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#forge:ores/cobalt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/ores/cobalt.json b/src/main/resources/data/forge/tags/blocks/ores/cobalt.json new file mode 100644 index 0000000..3c9cc35 --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/ores/cobalt.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:cobalt_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/ores_in_ground/netherrack.json b/src/main/resources/data/forge/tags/blocks/ores_in_ground/netherrack.json new file mode 100644 index 0000000..3c9cc35 --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/ores_in_ground/netherrack.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:cobalt_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/storage_blocks.json b/src/main/resources/data/forge/tags/blocks/storage_blocks.json new file mode 100644 index 0000000..79e2ccf --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/storage_blocks.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#forge:storage_blocks/raw_cobalt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/storage_blocks/raw_cobalt.json b/src/main/resources/data/forge/tags/blocks/storage_blocks/raw_cobalt.json new file mode 100644 index 0000000..01d58d3 --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/storage_blocks/raw_cobalt.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:raw_cobalt_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/ingots.json b/src/main/resources/data/forge/tags/items/ingots.json new file mode 100644 index 0000000..8bdd141 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/ingots.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#forge:ingots/cobalt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/ingots/cobalt.json b/src/main/resources/data/forge/tags/items/ingots/cobalt.json new file mode 100644 index 0000000..4b637bc --- /dev/null +++ b/src/main/resources/data/forge/tags/items/ingots/cobalt.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:cobalt_ingot" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/nuggets.json b/src/main/resources/data/forge/tags/items/nuggets.json new file mode 100644 index 0000000..ab9d2d1 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/nuggets.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#forge:nuggets/cobalt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/nuggets/cobalt.json b/src/main/resources/data/forge/tags/items/nuggets/cobalt.json new file mode 100644 index 0000000..3e98ef1 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/nuggets/cobalt.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:cobalt_nugget" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/ore_rates/singular.json b/src/main/resources/data/forge/tags/items/ore_rates/singular.json new file mode 100644 index 0000000..3c9cc35 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/ore_rates/singular.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:cobalt_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/ores.json b/src/main/resources/data/forge/tags/items/ores.json new file mode 100644 index 0000000..046e916 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/ores.json @@ -0,0 +1,6 @@ +{ + "values": [ + "#forge:ores/cobalt", + "#forge:ores/eternium" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/ores/cobalt.json b/src/main/resources/data/forge/tags/items/ores/cobalt.json new file mode 100644 index 0000000..3c9cc35 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/ores/cobalt.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:cobalt_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/ores/eternium.json b/src/main/resources/data/forge/tags/items/ores/eternium.json new file mode 100644 index 0000000..2723285 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/ores/eternium.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:eternium_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/ores_in_ground/netherrack.json b/src/main/resources/data/forge/tags/items/ores_in_ground/netherrack.json new file mode 100644 index 0000000..3c9cc35 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/ores_in_ground/netherrack.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:cobalt_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/raw_materials.json b/src/main/resources/data/forge/tags/items/raw_materials.json new file mode 100644 index 0000000..bc5dbbe --- /dev/null +++ b/src/main/resources/data/forge/tags/items/raw_materials.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#forge:raw_materials/cobalt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/raw_materials/cobalt.json b/src/main/resources/data/forge/tags/items/raw_materials/cobalt.json new file mode 100644 index 0000000..702d1e2 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/raw_materials/cobalt.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:raw_cobalt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/storage_blocks.json b/src/main/resources/data/forge/tags/items/storage_blocks.json new file mode 100644 index 0000000..79e2ccf --- /dev/null +++ b/src/main/resources/data/forge/tags/items/storage_blocks.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#forge:storage_blocks/raw_cobalt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/storage_blocks/raw_cobalt.json b/src/main/resources/data/forge/tags/items/storage_blocks/raw_cobalt.json new file mode 100644 index 0000000..82416f8 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/storage_blocks/raw_cobalt.json @@ -0,0 +1,5 @@ +{ + "values":[ + "otemod:raw_cobalt_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/unusual.json b/src/main/resources/data/forge/tags/items/unusual.json new file mode 100644 index 0000000..f237278 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/unusual.json @@ -0,0 +1,5 @@ +{ + "values":[ + "#forge:unusual/experience_blocks" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/unusual/experience_blocks.json b/src/main/resources/data/forge/tags/items/unusual/experience_blocks.json new file mode 100644 index 0000000..fe1705f --- /dev/null +++ b/src/main/resources/data/forge/tags/items/unusual/experience_blocks.json @@ -0,0 +1,5 @@ +{ + "values": [ + "otemod:aurora_block" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/ores.json b/src/main/resources/data/forge/tags/ores.json deleted file mode 100644 index 08c6bd9..0000000 --- a/src/main/resources/data/forge/tags/ores.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "values": [ - "otemod:eternium_ore_block", - "otemod:deepslate_eternium_ore_block", - "otemod:eternium_ore" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json index 3d50c8e..52a151f 100644 --- a/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -3,6 +3,9 @@ "otemod:eternium_ore_block", "otemod:deepslate_eternium_ore_block", "otemod:aurora_block", - "otemod:aurora_door" + "otemod:aurora_door", + + "otemod:cobalt_ore", + "otemod:raw_cobalt_ore" ] } \ No newline at end of file diff --git a/src/main/resources/data/otemod/dimension/resource_nether.json b/src/main/resources/data/otemod/dimension/resource_nether.json new file mode 100644 index 0000000..4969e54 --- /dev/null +++ b/src/main/resources/data/otemod/dimension/resource_nether.json @@ -0,0 +1,85 @@ +{ + "type": "otemod:resource_nether", + "generator": { + "type": "minecraft:noise", + "settings": "otemod:resource_nether", + "disable_mob_generation": true, + "biome_source": { + "type": "minecraft:multi_noise", + "biomes": [ + { + "biome": "minecraft:nether_wastes", + "parameters": { + "temperature": 0, + "humidity": 0, + "continentalness": 0, + "erosion": 0, + "weirdness": 0, + "depth": 0, + "offset": 0 + } + }, + { + "biome": "minecraft:soul_sand_valley", + "parameters": { + "temperature": 0, + "humidity": -0.5, + "continentalness": 0, + "erosion": 0, + "weirdness": 0, + "depth": 0, + "offset": 0 + } + }, + { + "biome": "minecraft:crimson_forest", + "parameters": { + "temperature": 0.4, + "humidity": 0, + "continentalness": 0, + "erosion": 0, + "weirdness": 0, + "depth": 0, + "offset": 0 + } + }, + { + "biome": "minecraft:warped_forest", + "parameters": { + "temperature": 0, + "humidity": 0.5, + "continentalness": 0, + "erosion": 0, + "weirdness": 0, + "depth": 0, + "offset": 0.375 + } + }, + { + "biome": "minecraft:basalt_deltas", + "parameters": { + "temperature": -0.5, + "humidity": 0, + "continentalness": 0, + "erosion": 0, + "weirdness": 0, + "depth": 0, + "offset": 0.175 + } + }, + { + "biome": "minecraft:mushroom_fields", + "parameters": { + "temperature": [-1, 1], + "humidity": [-1, 1], + "continentalness": [-1.2, -1.05], + "erosion": [-1, 1], + "weirdness": [-1, 1], + "depth": 0, + "offset": 0 + } + } + ] + } + } +} diff --git a/src/main/resources/data/otemod/dimension_type/resource_nether.json b/src/main/resources/data/otemod/dimension_type/resource_nether.json new file mode 100644 index 0000000..f54d6e4 --- /dev/null +++ b/src/main/resources/data/otemod/dimension_type/resource_nether.json @@ -0,0 +1,20 @@ +{ + "ultrawarm": true, + "natural": false, + "piglin_safe": true, + "respawn_anchor_works": false, + "bed_works": true, + "has_raids": false, + "has_skylight": false, + "has_ceiling": false, + "coordinate_scale": 12, + "ambient_light": 1, + "fixed_time": 0, + "logical_height": 384, + "effects": "minecraft:the_end", + "infiniburn": "#minecraft:infiniburn_overworld", + "min_y": -64, + "height": 384, + "monster_spawn_light_level": 0, + "monster_spawn_block_light_limit": 0 +} diff --git a/src/main/resources/data/otemod/forge/biome_modifier/cobalt_placer.json b/src/main/resources/data/otemod/forge/biome_modifier/cobalt_placer.json new file mode 100644 index 0000000..856b4cc --- /dev/null +++ b/src/main/resources/data/otemod/forge/biome_modifier/cobalt_placer.json @@ -0,0 +1,6 @@ +{ + "type": "forge:add_features", + "features": ["otemod:large_cobalt_ore", "otemod:small_cobalt_ore"], + "biomes": "#is_nether", + "step": "underground_ores" +} \ No newline at end of file diff --git a/src/main/resources/data/otemod/loot_tables/blocks/cobalt_ore.json b/src/main/resources/data/otemod/loot_tables/blocks/cobalt_ore.json new file mode 100644 index 0000000..6d9874d --- /dev/null +++ b/src/main/resources/data/otemod/loot_tables/blocks/cobalt_ore.json @@ -0,0 +1,50 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "name": "otemod:cobalt_ore", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + }, + { + "type": "minecraft:item", + "name": "otemod:raw_cobalt", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ] + } + ] + } + ] + } + ] + } + \ No newline at end of file diff --git a/src/main/resources/data/otemod/loot_tables/blocks/raw_cobalt_ore.json b/src/main/resources/data/otemod/loot_tables/blocks/raw_cobalt_ore.json new file mode 100644 index 0000000..6c413da --- /dev/null +++ b/src/main/resources/data/otemod/loot_tables/blocks/raw_cobalt_ore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:item", + "name": "otemod:raw_cobalt_ore" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] + } + \ No newline at end of file diff --git a/src/main/resources/data/otemod/recipes/clear_glass_block.json b/src/main/resources/data/otemod/recipes/clear_glass_block.json index 24831dc..461725d 100644 --- a/src/main/resources/data/otemod/recipes/clear_glass_block.json +++ b/src/main/resources/data/otemod/recipes/clear_glass_block.json @@ -3,7 +3,7 @@ "pattern": [ "Q Q", " G ", - " " + "Q Q" ], "key": { "Q": { diff --git a/src/main/resources/data/otemod/recipes/cobalt_block_from_ingots.json b/src/main/resources/data/otemod/recipes/cobalt_block_from_ingots.json new file mode 100644 index 0000000..9fa4840 --- /dev/null +++ b/src/main/resources/data/otemod/recipes/cobalt_block_from_ingots.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": ["###", "###", "###"], + "key": { + "#": { + "tag": "forge:ingots/cobalt" + } + }, + "result": { + "item": "otemod:cobalt_block" + } +} diff --git a/src/main/resources/data/otemod/recipes/cobalt_ingot_from_blasting.json b/src/main/resources/data/otemod/recipes/cobalt_ingot_from_blasting.json new file mode 100644 index 0000000..d087bab --- /dev/null +++ b/src/main/resources/data/otemod/recipes/cobalt_ingot_from_blasting.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:blasting", + "ingredient": [ + { + "item": "otemod:raw_cobalt" + }, + { + "item": "otemod:cobalt_ore" + } + ], + "result": "otemod:cobalt_ingot", + "experience": 1.5, + "cookingtime": 200 +} diff --git a/src/main/resources/data/otemod/recipes/cobalt_ingot_from_block.json b/src/main/resources/data/otemod/recipes/cobalt_ingot_from_block.json new file mode 100644 index 0000000..ee7ddd9 --- /dev/null +++ b/src/main/resources/data/otemod/recipes/cobalt_ingot_from_block.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "otemod:cobalt_block" + } + ], + "result": { + "item": "otemod:cobalt_ingot", + "count": 9 + } +} diff --git a/src/main/resources/data/otemod/recipes/cobalt_ingot_from_nuggets.json b/src/main/resources/data/otemod/recipes/cobalt_ingot_from_nuggets.json new file mode 100644 index 0000000..0999f51 --- /dev/null +++ b/src/main/resources/data/otemod/recipes/cobalt_ingot_from_nuggets.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": ["###", "###", "###"], + "key": { + "#": { + "tag": "forge:nuggets/cobalt" + } + }, + "result": { + "item": "otemod:cobalt_ingot" + } +} diff --git a/src/main/resources/data/otemod/recipes/cobalt_ingot_from_smelting.json b/src/main/resources/data/otemod/recipes/cobalt_ingot_from_smelting.json new file mode 100644 index 0000000..12f67f2 --- /dev/null +++ b/src/main/resources/data/otemod/recipes/cobalt_ingot_from_smelting.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:smelting", + "ingredient": [ + { + "item": "otemod:raw_cobalt" + }, + { + "item": "otemod:cobalt_ore" + } + ], + "result": "otemod:cobalt_ingot", + "experience": 1.5, + "cookingtime": 200 +} diff --git a/src/main/resources/data/otemod/recipes/cobalt_nugget_from_ingot.json b/src/main/resources/data/otemod/recipes/cobalt_nugget_from_ingot.json new file mode 100644 index 0000000..17fe517 --- /dev/null +++ b/src/main/resources/data/otemod/recipes/cobalt_nugget_from_ingot.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "otemod:cobalt_ingot" + } + ], + "result": { + "item": "otemod:cobalt_nugget", + "count": 9 + } +} diff --git a/src/main/resources/data/otemod/recipes/copper_can.json b/src/main/resources/data/otemod/recipes/copper_can.json new file mode 100644 index 0000000..04f8363 --- /dev/null +++ b/src/main/resources/data/otemod/recipes/copper_can.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": ["c c", " c "], + "key": { + "c": { + "tag": "forge:ingots/copper" + } + }, + "result": { + "item": "otemod:copper_can", + "count": 3 + } +} diff --git a/src/main/resources/data/otemod/recipes/eternium_dust.json b/src/main/resources/data/otemod/recipes/eternium_dust.json deleted file mode 100644 index 05cafe8..0000000 --- a/src/main/resources/data/otemod/recipes/eternium_dust.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "mekanism:enriching", - "input": { - "ingredient": "otemod:eternium_ore" - }, - "output": { - "item": "otemod:eternium_dust" - }, - "experience": 25, - "cookingtime": 60 -} diff --git a/src/main/resources/data/otemod/recipes/eternium_dust_from_block.json b/src/main/resources/data/otemod/recipes/eternium_dust_from_block.json deleted file mode 100644 index cc0cbc0..0000000 --- a/src/main/resources/data/otemod/recipes/eternium_dust_from_block.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "mekanism:enriching", - "input": "otemod:eternium_ore_block", - "output": "otemod:eternium_dust", - "experience": 25, - "cookingtime": 60 -} diff --git a/src/main/resources/data/otemod/recipes/eternium_dust_from_block_deepslate.json b/src/main/resources/data/otemod/recipes/eternium_dust_from_block_deepslate.json deleted file mode 100644 index d9352e8..0000000 --- a/src/main/resources/data/otemod/recipes/eternium_dust_from_block_deepslate.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "mekanism:enriching", - "input": "otemod:deepslate_eternium_ore_block", - "output": "otemod:eternium_dust", - "experience": 25, - "cookingtime": 60 -} diff --git a/src/main/resources/data/otemod/recipes/eternium_dust_from_fragment.json b/src/main/resources/data/otemod/recipes/eternium_dust_from_fragment.json new file mode 100644 index 0000000..0082a71 --- /dev/null +++ b/src/main/resources/data/otemod/recipes/eternium_dust_from_fragment.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "otemod:eternium_fragment" + }, + "result": "otemod:eternium_dust", + "experience": 25, + "cookingtime": 60 + } + \ No newline at end of file diff --git a/src/main/resources/data/otemod/recipes/gold_bars.json b/src/main/resources/data/otemod/recipes/gold_bars.json new file mode 100644 index 0000000..b33c30f --- /dev/null +++ b/src/main/resources/data/otemod/recipes/gold_bars.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": ["###", "###"], + "key": { + "#": { + "tag": "forge:ingots/gold" + } + }, + "result": { + "item": "otemod:gold_bars", + "count": 16 + } +} diff --git a/src/main/resources/data/otemod/recipes/item_scrubber.json b/src/main/resources/data/otemod/recipes/item_scrubber.json new file mode 100644 index 0000000..706365a --- /dev/null +++ b/src/main/resources/data/otemod/recipes/item_scrubber.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "A": { + "tag": "forge:unusual/experience_blocks" + }, + "B": { + "tag": "forge:ingots/cobalt" + } + }, + "pattern": [ + "ABA", + "B B", + "ABA" + ], + "result":{ + "item": "otemod:item_scrubber" + } +} \ No newline at end of file diff --git a/src/main/resources/data/otemod/recipes/nether_grout.json b/src/main/resources/data/otemod/recipes/nether_grout.json new file mode 100644 index 0000000..c278e7f --- /dev/null +++ b/src/main/resources/data/otemod/recipes/nether_grout.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:magma_cream" + }, + [ + { + "item": "minecraft:soul_sand" + }, + { + "item": "minecraft:soul_soil" + } + ], + { + "item": "minecraft:gravel" + } + ], + "result": { + "item": "otemod:nether_grout", + "count": 2 + } +} diff --git a/src/main/resources/data/otemod/recipes/pattern.json b/src/main/resources/data/otemod/recipes/pattern.json new file mode 100644 index 0000000..66e89a3 --- /dev/null +++ b/src/main/resources/data/otemod/recipes/pattern.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ps", + "sp" + ], + "key": { + "s": { + "tag": "forge:rods/wooden" + }, + "p": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "otemod:pattern", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/otemod/recipes/raw_cobalt_block_from_raws.json b/src/main/resources/data/otemod/recipes/raw_cobalt_block_from_raws.json new file mode 100644 index 0000000..0f15f0b --- /dev/null +++ b/src/main/resources/data/otemod/recipes/raw_cobalt_block_from_raws.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "tag": "forge:raw_materials/cobalt" + } + }, + "result": { + "item": "otemod:raw_cobalt_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/data/otemod/recipes/raw_cobalt_from_raw_block.json b/src/main/resources/data/otemod/recipes/raw_cobalt_from_raw_block.json new file mode 100644 index 0000000..4ff0943 --- /dev/null +++ b/src/main/resources/data/otemod/recipes/raw_cobalt_from_raw_block.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "otemod:raw_cobalt_ore" + } + ], + "result": { + "item": "otemod:raw_cobalt", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/resources/data/otemod/recipes/scorched_brick.json b/src/main/resources/data/otemod/recipes/scorched_brick.json new file mode 100644 index 0000000..435956b --- /dev/null +++ b/src/main/resources/data/otemod/recipes/scorched_brick.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "otemod:nether_grout" + }, + "result": "otemod:scorched_brick", + "experience": 0.3, + "cookingtime": 200 +} diff --git a/src/main/resources/data/otemod/recipes/scorched_brick_kiln.json b/src/main/resources/data/otemod/recipes/scorched_brick_kiln.json new file mode 100644 index 0000000..8c556c2 --- /dev/null +++ b/src/main/resources/data/otemod/recipes/scorched_brick_kiln.json @@ -0,0 +1,54 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "modid": "ceramics", + "type": "forge:mod_loaded" + } + ], + "recipe": { + "type": "ceramics:kiln", + "ingredient": { + "item": "otemod:nether_grout" + }, + "result": "otemod:scorched_brick", + "experience": 0.3, + "cookingtime": 100 + } + }, + { + "conditions": [ + { + "type": "forge:true" + } + ], + "recipe": { + "type": "minecraft:blasting", + "ingredient": { + "item": "otemod:nether_grout" + }, + "result": "otemod:scorched_brick", + "experience": 0.3, + "cookingtime": 100 + } + }, + { + "conditions": [ + { + "type": "forge:true" + } + ], + "recipe": { + "type": "minecraft:smelting", + "ingredient": { + "item": "otemod:nether_grout" + }, + "result": "otemod:scorched_brick", + "experience": 0.3, + "cookingtime": 100 + } + } + ] +} diff --git a/src/main/resources/data/otemod/recipes/scorched_table.json b/src/main/resources/data/otemod/recipes/scorched_table.json new file mode 100644 index 0000000..56c8bc9 --- /dev/null +++ b/src/main/resources/data/otemod/recipes/scorched_table.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": ["###", "# #", "# #"], + "key": { + "#": { + "item": "otemod:scorched_brick" + } + }, + "result": { + "item": "otemod:scorched_table" + } +} diff --git a/src/main/resources/data/otemod/tags/platform_connections.json b/src/main/resources/data/otemod/tags/platform_connections.json new file mode 100644 index 0000000..b23a054 --- /dev/null +++ b/src/main/resources/data/otemod/tags/platform_connections.json @@ -0,0 +1,17 @@ +{ + "values": [ + "otemod:gold_bars", + "minecraft:lever", + "minecraft:ladder", + "minecraft:iron_bars", + "minecraft:tripwire_hook", + "minecraft:wall_torch", + "minecraft:soul_wall_torch", + "minecraft:redstone_wall_torch", + "minecraft:glass_panes", + "minecraft:buttons", + "minecraft:fences", + "minecraft:walls", + "minecraft:wall_signs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/otemod/worldgen/configured_feature/large_cobalt_ore.json b/src/main/resources/data/otemod/worldgen/configured_feature/large_cobalt_ore.json new file mode 100644 index 0000000..aa143b1 --- /dev/null +++ b/src/main/resources/data/otemod/worldgen/configured_feature/large_cobalt_ore.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:ore", + "config": { + "size": 6, + "discard_chance_on_air_exposure": 0, + "targets": [ + { + "target": { + "predicate_type": "minecraft:block_match", + "block": "minecraft:netherrack" + }, + "state": { + "Name": "otemod:cobalt_ore" + } + } + ] + } + } + \ No newline at end of file diff --git a/src/main/resources/data/otemod/worldgen/configured_feature/small_cobalt_ore.json b/src/main/resources/data/otemod/worldgen/configured_feature/small_cobalt_ore.json new file mode 100644 index 0000000..b0d71ab --- /dev/null +++ b/src/main/resources/data/otemod/worldgen/configured_feature/small_cobalt_ore.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:ore", + "config": { + "size": 4, + "discard_chance_on_air_exposure": 0, + "targets": [ + { + "target": { + "predicate_type": "minecraft:block_match", + "block": "minecraft:netherrack" + }, + "state": { + "Name": "otemod:cobalt_ore" + } + } + ] + } +} diff --git a/src/main/resources/data/otemod/worldgen/noise_settings/resource_nether.json b/src/main/resources/data/otemod/worldgen/noise_settings/resource_nether.json new file mode 100644 index 0000000..cb73520 --- /dev/null +++ b/src/main/resources/data/otemod/worldgen/noise_settings/resource_nether.json @@ -0,0 +1,738 @@ +{ + "sea_level": 32, + "disable_mob_generation": false, + "aquifers_enabled": false, + "ore_veins_enabled": false, + "legacy_random_source": true, + "default_block": { + "Name": "minecraft:netherrack" + }, + "default_fluid": { + "Name": "minecraft:lava", + "Properties": { + "level": "0" + } + }, + "noise": { + "min_y": 0, + "height": 128, + "size_horizontal": 1, + "size_vertical": 2 + }, + "noise_router": { + "barrier": 0, + "fluid_level_floodedness": 0, + "fluid_level_spread": 0, + "lava": 0, + "temperature": { + "type": "minecraft:shifted_noise", + "noise": "minecraft:temperature", + "xz_scale": 0.25, + "y_scale": 0, + "shift_x": "minecraft:shift_x", + "shift_y": 0, + "shift_z": "minecraft:shift_z" + }, + "vegetation": { + "type": "minecraft:shifted_noise", + "noise": "minecraft:vegetation", + "xz_scale": 0.25, + "y_scale": 0, + "shift_x": "minecraft:shift_x", + "shift_y": 0, + "shift_z": "minecraft:shift_z" + }, + "continents": 0, + "erosion": 0, + "depth": 0, + "ridges": 0, + "initial_density_without_jaggedness": 0, + "final_density": { + "type": "minecraft:squeeze", + "argument": { + "type": "minecraft:mul", + "argument1": 0.64, + "argument2": { + "type": "minecraft:interpolated", + "argument": { + "type": "minecraft:blend_density", + "argument": { + "type": "minecraft:add", + "argument1": 2.5, + "argument2": { + "type": "minecraft:mul", + "argument1": { + "type": "minecraft:y_clamped_gradient", + "from_y": -8, + "to_y": 24, + "from_value": 0, + "to_value": 1 + }, + "argument2": { + "type": "minecraft:add", + "argument1": -2.5, + "argument2": { + "type": "minecraft:add", + "argument1": 0.9375, + "argument2": { + "type": "minecraft:mul", + "argument1": { + "type": "minecraft:y_clamped_gradient", + "from_y": 104, + "to_y": 128, + "from_value": 1, + "to_value": 0 + }, + "argument2": { + "type": "minecraft:add", + "argument1": -0.9375, + "argument2": "minecraft:nether/base_3d_noise" + } + } + } + } + } + } + } + } + } + }, + "vein_toggle": 0, + "vein_ridged": 0, + "vein_gap": 0 + }, + "spawn_target": [], + "surface_rule": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:vertical_gradient", + "random_name": "minecraft:bedrock_floor", + "true_at_and_below": { + "above_bottom": 0 + }, + "false_at_and_above": { + "above_bottom": 5 + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:bedrock" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:vertical_gradient", + "random_name": "minecraft:bedrock_roof", + "true_at_and_below": { + "below_top": 5 + }, + "false_at_and_above": { + "below_top": 0 + } + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:bedrock" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "below_top": 5 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:netherrack" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:basalt_deltas" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": true, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:basalt", + "Properties": { + "axis": "y" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": true, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:patch", + "min_threshold": -0.012, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 30 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": true + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 35 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": true + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:nether_state_selector", + "min_threshold": 0, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:basalt", + "Properties": { + "axis": "y" + } + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:blackstone" + } + } + ] + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:soul_sand_valley" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": true, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:nether_state_selector", + "min_threshold": 0, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:soul_sand" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:soul_soil" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": true, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:patch", + "min_threshold": -0.012, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 30 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": true + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 35 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": true + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:nether_state_selector", + "min_threshold": 0, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:soul_sand" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:soul_soil" + } + } + ] + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 32 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + } + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:hole" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:lava", + "Properties": { + "level": "0" + } + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:warped_forest" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:netherrack", + "min_threshold": 0.54, + "max_threshold": 1.7976931348623157e+308 + } + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 31 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:nether_wart", + "min_threshold": 1.17, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:warped_wart_block" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:warped_nylium" + } + } + ] + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:crimson_forest" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:netherrack", + "min_threshold": 0.54, + "max_threshold": 1.7976931348623157e+308 + } + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 31 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:nether_wart", + "min_threshold": 1.17, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:nether_wart_block" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:crimson_nylium" + } + } + ] + } + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:nether_wastes" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": true, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:soul_sand_layer", + "min_threshold": -0.012, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:hole" + } + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 30 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": true + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 35 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": true + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:soul_sand" + } + } + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:netherrack" + } + } + ] + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 31 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 35 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": true + } + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:gravel_layer", + "min_threshold": -0.012, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 32 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:hole" + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + } + ] + } + } + } + } + } + ] + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:netherrack" + } + } + ] + } + } + \ No newline at end of file diff --git a/src/main/resources/data/otemod/worldgen/placed_feature/large_cobalt_ore.json b/src/main/resources/data/otemod/worldgen/placed_feature/large_cobalt_ore.json new file mode 100644 index 0000000..ce81b3b --- /dev/null +++ b/src/main/resources/data/otemod/worldgen/placed_feature/large_cobalt_ore.json @@ -0,0 +1,28 @@ +{ + "feature": "otemod:large_cobalt_ore", + "placement": [ + { + "type": "minecraft:count", + "count": 3 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "min_inclusive": { + "absolute": 8 + }, + "max_inclusive": { + "absolute": 32 + } + } + }, + { + "type": "minecraft:biome" + } + ] + } + \ No newline at end of file diff --git a/src/main/resources/data/otemod/worldgen/placed_feature/small_cobalt_ore.json b/src/main/resources/data/otemod/worldgen/placed_feature/small_cobalt_ore.json new file mode 100644 index 0000000..a331fed --- /dev/null +++ b/src/main/resources/data/otemod/worldgen/placed_feature/small_cobalt_ore.json @@ -0,0 +1,16 @@ +{ + "feature": "otemod:small_cobalt_ore", + "placement": [ + { + "type": "minecraft:count", + "count": 5 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:biome" + } + ] + } + \ No newline at end of file diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 81ddd03..fb3a5f8 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "description": "OTEMod Resources", + "description": "OTEMod", "pack_format": 10 } }