From c531eebc5fb81a4ca758867584a7d8f4a6477ade Mon Sep 17 00:00:00 2001 From: oier Date: Wed, 16 Aug 2023 19:33:46 +0200 Subject: [PATCH] :building_construction: Configs, other mods compact init, art --- .../4d2cf289d7163ae9b4170972f21a12a309c005b8 | 6 +- .../assets/trading_station/lang/en_ud.json | 2 +- .../assets/trading_station/lang/en_us.json | 2 +- .../trading_station/TradingStation.java | 38 +++++++---- .../trading_station/compat/Mods.java | 61 ++++++++++++++++++ .../trading_station/compat/jei/JEIPlugin.java | 8 ++- .../compat/jei/TradingRecipeCategory.java | 5 +- .../trading_station/TradingStationBlock.java | 8 +-- .../TradingStationBlockEntity.java | 52 ++++++--------- .../trading_station/TradingStationConfig.java | 20 +++--- .../trading_station/TradingStationMenu.java | 22 ++----- .../powered/PoweredTradingStationBlock.java | 24 +------ .../PoweredTradingStationBlockEntity.java | 9 +-- .../powered/PoweredTradingStationConfig.java | 28 ++++++++ .../powered/PoweredTradingStationMenu.java | 23 ++----- .../foundation/gui/AbstractTradingMenu.java | 6 -- .../foundation/util/ModLang.java | 6 +- .../trading_station/registrate/Config.java | 8 ++- .../MechanicalTradingStationRegistrate.java | 47 ++++++++++++++ .../registrate/ModBlockEntities.java | 24 ------- .../registrate/ModCreativeTab.java | 5 +- .../trading_station/registrate/ModMenus.java | 21 ------ .../registrate/ModRecipes.java | 1 + ...a => PoweredTradingStationRegistrate.java} | 43 ++++++------ .../registrate/TradingStationRegistrate.java | 48 ++++++++++++++ .../block/powered_trading_station_powered.png | Bin 1480 -> 1463 bytes .../block/trading_station_powered.png | Bin 988 -> 999 bytes 27 files changed, 308 insertions(+), 209 deletions(-) create mode 100644 src/main/java/com/oierbravo/trading_station/compat/Mods.java create mode 100644 src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationConfig.java create mode 100644 src/main/java/com/oierbravo/trading_station/registrate/MechanicalTradingStationRegistrate.java delete mode 100644 src/main/java/com/oierbravo/trading_station/registrate/ModBlockEntities.java delete mode 100644 src/main/java/com/oierbravo/trading_station/registrate/ModMenus.java rename src/main/java/com/oierbravo/trading_station/registrate/{ModBlocks.java => PoweredTradingStationRegistrate.java} (58%) create mode 100644 src/main/java/com/oierbravo/trading_station/registrate/TradingStationRegistrate.java diff --git a/src/generated/resources/.cache/4d2cf289d7163ae9b4170972f21a12a309c005b8 b/src/generated/resources/.cache/4d2cf289d7163ae9b4170972f21a12a309c005b8 index 4cb196b..866a7ea 100644 --- a/src/generated/resources/.cache/4d2cf289d7163ae9b4170972f21a12a309c005b8 +++ b/src/generated/resources/.cache/4d2cf289d7163ae9b4170972f21a12a309c005b8 @@ -1,8 +1,8 @@ -// 1.19.2 2023-08-16T15:56:06.979095197 Registrate Provider for trading_station [Recipes, Advancements, Loot tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)] +// 1.19.2 2023-08-16T17:59:11.715017504 Registrate Provider for trading_station [Recipes, Advancements, Loot tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)] ac427e21e7a0915809800ce83800780c045678c6 assets/trading_station/blockstates/powered_trading_station.json 391b0f87f6c9bd80e20dfc8b949e7dd99cd16fe9 assets/trading_station/blockstates/trading_station.json -2b8f51b49619e47225d4710f7917205a31ff362e assets/trading_station/lang/en_ud.json -53756e3e6b11fb1c70ccf8979a5a36504a702fca assets/trading_station/lang/en_us.json +2c8a8b7c6874dcb7e5474ba19b33fbb2d166c834 assets/trading_station/lang/en_ud.json +efb3401e9c37c753973bf81e4da4bb0946061a19 assets/trading_station/lang/en_us.json 373be6ce42eee460888161c967f098e5943e3778 assets/trading_station/models/item/powered_trading_station.json 7ddda578b6d6072db924599a9959579470354897 assets/trading_station/models/item/trading_station.json c3b4c04c1cecdc5001fcddda7b30b11b15f0b2b2 data/trading_station/loot_tables/blocks/powered_trading_station.json diff --git a/src/generated/resources/assets/trading_station/lang/en_ud.json b/src/generated/resources/assets/trading_station/lang/en_ud.json index 9e63581..d151f54 100644 --- a/src/generated/resources/assets/trading_station/lang/en_ud.json +++ b/src/generated/resources/assets/trading_station/lang/en_ud.json @@ -2,7 +2,7 @@ "block.trading_station.powered_trading_station": "uoıʇɐʇS buıpɐɹ⟘ pǝɹǝʍoԀ", "block.trading_station.trading_station": "uoıʇɐʇS buıpɐɹ⟘", "config.jade.plugin_trading_station.trading_station_data": "ɐʇɐp uoıʇɐʇS buıpɐɹ⟘", - "itemGroup.trading_station:main": "uoıʇɐʇS buıpɐɹ⟘", + "itemGroup.trading_station": "uoıʇɐʇS buıpɐɹ⟘", "trading_station.powered_trading_station.block.display": "uoıʇɐʇS buıpɐɹ⟘ pǝɹǝʍoԀ", "trading_station.select_target.button": "ʇǝbɹɐʇ ʇɔǝןǝS", "trading_station.select_target.clear": "ɹɐǝןƆ", diff --git a/src/generated/resources/assets/trading_station/lang/en_us.json b/src/generated/resources/assets/trading_station/lang/en_us.json index 4a0ed3a..7fa54cd 100644 --- a/src/generated/resources/assets/trading_station/lang/en_us.json +++ b/src/generated/resources/assets/trading_station/lang/en_us.json @@ -2,7 +2,7 @@ "block.trading_station.powered_trading_station": "Powered Trading Station", "block.trading_station.trading_station": "Trading Station", "config.jade.plugin_trading_station.trading_station_data": "Trading Station data", - "itemGroup.trading_station:main": "Trading Station", + "itemGroup.trading_station": "Trading Station", "trading_station.powered_trading_station.block.display": "Powered Trading Station", "trading_station.select_target.button": "Select target", "trading_station.select_target.clear": "Clear", diff --git a/src/main/java/com/oierbravo/trading_station/TradingStation.java b/src/main/java/com/oierbravo/trading_station/TradingStation.java index 55ed1ea..e62a188 100644 --- a/src/main/java/com/oierbravo/trading_station/TradingStation.java +++ b/src/main/java/com/oierbravo/trading_station/TradingStation.java @@ -3,14 +3,17 @@ package com.oierbravo.trading_station; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.mojang.logging.LogUtils; +import com.oierbravo.trading_station.compat.Mods; +import com.oierbravo.trading_station.content.trading_station.TradingStationConfig; import com.oierbravo.trading_station.foundation.util.ModLang; import com.oierbravo.trading_station.registrate.*; import com.tterrag.registrate.Registrate; +import net.minecraft.data.DataGenerator; import net.minecraftforge.common.util.Lazy; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.data.event.GatherDataEvent; +import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.common.Mod; @@ -44,15 +47,29 @@ public class TradingStation MinecraftForge.EVENT_BUS.register(this); ModCreativeTab modTab = new ModCreativeTab(); - - ModBlocks.register(); - ModBlockEntities.register(); - ModRecipes.register(modEventBus); - ModMessages.register(); - ModMenus.register(); Config.register(); - registrate().addRawLang("itemGroup.trading_station:main", "Trading Station"); + TradingStationRegistrate.register(); + PoweredTradingStationRegistrate.register(); + + ModRecipes.register(modEventBus); + ModMessages.register(); + + modEventBus.addListener(EventPriority.LOWEST, TradingStation::gatherData); + + Mods.CREATE.executeIfInstalled(() -> MechanicalTradingStationRegistrate::register); + } + public static void gatherData(GatherDataEvent event) { + DataGenerator gen = event.getGenerator(); + if (event.includeClient()) { + registerLanguageKeys(); + } + if (event.includeServer()) { + + } + } + private static void registerLanguageKeys(){ + registrate().addRawLang("itemGroup.trading_station", "Trading Station"); registrate().addRawLang(ModLang.key("trading_station.block.display"), "Trading Station"); registrate().addRawLang(ModLang.key("powered_trading_station.block.display"), "Powered Trading Station"); registrate().addRawLang(ModLang.key("trading.recipe"), "Trading recipe"); @@ -61,10 +78,7 @@ public class TradingStation registrate().addRawLang(ModLang.key("select_target.button"), "Select target"); registrate().addRawLang(ModLang.key("select_target.clear"), "Clear"); registrate().addRawLang("config.jade.plugin_trading_station.trading_station_data", "Trading Station data"); - } - - public static Registrate registrate() { return REGISTRATE.get(); } diff --git a/src/main/java/com/oierbravo/trading_station/compat/Mods.java b/src/main/java/com/oierbravo/trading_station/compat/Mods.java new file mode 100644 index 0000000..3fcaba6 --- /dev/null +++ b/src/main/java/com/oierbravo/trading_station/compat/Mods.java @@ -0,0 +1,61 @@ +package com.oierbravo.trading_station.compat; + +import com.oierbravo.trading_station.foundation.util.ModLang; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.Optional; +import java.util.function.Supplier; +/** + * From Create mod. + * + */ + +/** + * For compatibility with and without another mod present, we have to define load conditions of the specific code + */ +public enum Mods { + CREATE, + ARS_NOUVEAU; + + /** + * @return a boolean of whether the mod is loaded or not based on mod id + */ + public boolean isLoaded() { + return ModList.get().isLoaded(asId()); + } + + /** + * @return the mod id + */ + public String asId() { + return ModLang.asId(name()); + } + + /** + * Simple hook to run code if a mod is installed + * @param toRun will be run only if the mod is loaded + * @return Optional.empty() if the mod is not loaded, otherwise an Optional of the return value of the given supplier + */ + public Optional runIfInstalled(Supplier> toRun) { + if (isLoaded()) + return Optional.of(toRun.get().get()); + return Optional.empty(); + } + + /** + * Simple hook to execute code if a mod is installed + * @param toExecute will be executed only if the mod is loaded + */ + public void executeIfInstalled(Supplier toExecute) { + if (isLoaded()) { + toExecute.get().run(); + } + } + + public Block getBlock(String id) { + return ForgeRegistries.BLOCKS.getValue(new ResourceLocation(asId(), id)); + } +} diff --git a/src/main/java/com/oierbravo/trading_station/compat/jei/JEIPlugin.java b/src/main/java/com/oierbravo/trading_station/compat/jei/JEIPlugin.java index 0cec4d7..5db3e89 100644 --- a/src/main/java/com/oierbravo/trading_station/compat/jei/JEIPlugin.java +++ b/src/main/java/com/oierbravo/trading_station/compat/jei/JEIPlugin.java @@ -2,7 +2,9 @@ package com.oierbravo.trading_station.compat.jei; import com.oierbravo.trading_station.TradingStation; import com.oierbravo.trading_station.content.trading_recipe.TradingRecipe; -import com.oierbravo.trading_station.registrate.ModBlocks; +import com.oierbravo.trading_station.content.trading_station.TradingStationConfig; +import com.oierbravo.trading_station.registrate.PoweredTradingStationRegistrate; +import com.oierbravo.trading_station.registrate.TradingStationRegistrate; import mezz.jei.api.IModPlugin; import mezz.jei.api.JeiPlugin; import mezz.jei.api.recipe.RecipeType; @@ -33,8 +35,8 @@ public class JEIPlugin implements IModPlugin { @Override public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { - registration.addRecipeCatalyst(new ItemStack(ModBlocks.TRADING_STATION.get()),new RecipeType<>(TradingRecipeCategory.UID, TradingRecipe.class)); - registration.addRecipeCatalyst(new ItemStack(ModBlocks.POWERED_TRADING_STATION.get()),new RecipeType<>(TradingRecipeCategory.UID, TradingRecipe.class)); + registration.addRecipeCatalyst(new ItemStack(TradingStationRegistrate.TRADING_STATION_BLOCK.get()),new RecipeType<>(TradingRecipeCategory.UID, TradingRecipe.class)); + registration.addRecipeCatalyst(new ItemStack(PoweredTradingStationRegistrate.POWERED_TRADING_STATION_BLOCK.get()),new RecipeType<>(TradingRecipeCategory.UID, TradingRecipe.class)); } @Override diff --git a/src/main/java/com/oierbravo/trading_station/compat/jei/TradingRecipeCategory.java b/src/main/java/com/oierbravo/trading_station/compat/jei/TradingRecipeCategory.java index afa339c..f0fc6c3 100644 --- a/src/main/java/com/oierbravo/trading_station/compat/jei/TradingRecipeCategory.java +++ b/src/main/java/com/oierbravo/trading_station/compat/jei/TradingRecipeCategory.java @@ -7,7 +7,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.oierbravo.trading_station.TradingStation; import com.oierbravo.trading_station.content.trading_recipe.TradingRecipe; import com.oierbravo.trading_station.foundation.util.ModLang; -import com.oierbravo.trading_station.registrate.ModBlocks; +import com.oierbravo.trading_station.registrate.TradingStationRegistrate; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.drawable.IDrawable; @@ -26,6 +26,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import javax.annotation.Nonnull; @@ -63,7 +64,7 @@ public class TradingRecipeCategory implements IRecipeCategory { } }; - this.icon = helper.createDrawableIngredient(VanillaTypes.ITEM_STACK, new ItemStack(ModBlocks.TRADING_STATION.get())); + this.icon = helper.createDrawableIngredient(VanillaTypes.ITEM_STACK, new ItemStack(TradingStationRegistrate.TRADING_STATION_BLOCK.get())); } diff --git a/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationBlock.java b/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationBlock.java index 0c1f793..d25d078 100644 --- a/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationBlock.java +++ b/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationBlock.java @@ -1,6 +1,7 @@ package com.oierbravo.trading_station.content.trading_station; -import com.oierbravo.trading_station.registrate.ModBlockEntities; +import com.oierbravo.trading_station.registrate.PoweredTradingStationRegistrate; +import com.oierbravo.trading_station.registrate.TradingStationRegistrate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -8,7 +9,6 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; @@ -79,7 +79,7 @@ public class TradingStationBlock extends BaseEntityBlock { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { - return ModBlockEntities.TRADING_STATION.create(pPos, pState); + return TradingStationRegistrate.TRADING_STATION_BLOCK_ENTITY.create(pPos, pState); } @Override @@ -95,7 +95,7 @@ public class TradingStationBlock extends BaseEntityBlock { if(pLevel.isClientSide()) { return null; } - return createTickerHelper(pBlockEntityType, ModBlockEntities.TRADING_STATION.get(), + return createTickerHelper(pBlockEntityType, TradingStationRegistrate.TRADING_STATION_BLOCK_ENTITY.get(), (pLevel1, pPos, pState1, pBlockEntity) -> pBlockEntity.tick(pLevel1, pPos, pState1)); } diff --git a/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationBlockEntity.java b/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationBlockEntity.java index 61f166d..9263ff4 100644 --- a/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationBlockEntity.java +++ b/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationBlockEntity.java @@ -57,13 +57,11 @@ public class TradingStationBlockEntity extends BlockEntity implements MenuProvi private BlockState lastBlockState; protected final ContainerData containerData; - private Item preferedItem; public TradingStationBlockEntity(BlockEntityType pType, BlockPos pWorldPosition, BlockState pBlockState) { super(pType, pWorldPosition, pBlockState); updateTag = getPersistentData(); lastBlockState = this.getBlockState(); - preferedItem = ItemStack.EMPTY.getItem(); containerData = TradingStationBlockEntity.createContainerData(this); } public static ContainerData createContainerData(TradingStationBlockEntity pBlockEntity){ @@ -99,6 +97,7 @@ public class TradingStationBlockEntity extends BlockEntity implements MenuProvi @Override protected void onContentsChanged(int slot) { setChanged(); + resetProgress(); if(!level.isClientSide()) { ModMessages.sendToClients(new ItemStackSyncS2CPacket(slot,this.getStackInSlot(0), worldPosition, ItemStackSyncS2CPacket.SlotType.TARGET)); } @@ -127,9 +126,11 @@ public class TradingStationBlockEntity extends BlockEntity implements MenuProvi private ItemStackHandler createInputItemHandler() { return new ItemStackHandler(2) { + @Override protected void onContentsChanged(int slot) { setChanged(); + resetProgress(); if(!level.isClientSide()) { ModMessages.sendToClients(new ItemStackSyncS2CPacket(slot,this.getStackInSlot(0), worldPosition, ItemStackSyncS2CPacket.SlotType.INPUT)); } @@ -206,7 +207,6 @@ public class TradingStationBlockEntity extends BlockEntity implements MenuProvi tag.put("target", targetItemHandler.serializeNBT()); tag.putInt("trading_station.progress", progress); tag.putInt("trading_station.maxProgress", maxProgress); - String preferedItemString = ForgeRegistries.ITEMS.getKey(preferedItem).toString(); } @Override @@ -217,8 +217,6 @@ public class TradingStationBlockEntity extends BlockEntity implements MenuProvi targetItemHandler.deserializeNBT(tag.getCompound("target")); progress = tag.getInt("trading_station.progress"); maxProgress = tag.getInt("trading_station.maxProgress"); - String preferedItemString = tag.getString("trading_station.preferedItem"); - preferedItem = ForgeRegistries.ITEMS.getValue( ResourceLocation.tryParse(preferedItemString)); } public void drops() { @@ -256,25 +254,20 @@ public class TradingStationBlockEntity extends BlockEntity implements MenuProvi } if(!isPowered(this)) return; + if(!canCraftItem()) + return; - if (canCraftItem()) { - this.updateProgress(); - BlockEntity.setChanged(pLevel, pPos, pState); - this.maxProgress = this.getProcessingTime(this); - if (this.progress > this.maxProgress) { - craftItem(); - } - BlockEntity.setChanged(pLevel, pPos, pState); - - } else { - this.resetProgress(); - BlockEntity.setChanged(pLevel, pPos, pState); + this.updateProgress(); + BlockEntity.setChanged(pLevel, pPos, pState); + this.maxProgress = this.getProcessingTime(this); + if (this.progress > this.maxProgress) { + craftItem(); } - - + BlockEntity.setChanged(pLevel, pPos, pState); } + protected void updateProgress(){ - this.progress += 1; + this.progress += TradingStationConfig.PROGRESS_PER_TICK.get(); } private static boolean isPowered(TradingStationBlockEntity pBlockEntity){ @@ -299,7 +292,6 @@ public class TradingStationBlockEntity extends BlockEntity implements MenuProvi return inputInventory; } private void craftItem() { - Level level = this.getLevel(); SimpleContainer inputInventory = getInputInventory(this); Optional recipe = getRecipe(this); @@ -320,33 +312,25 @@ public class TradingStationBlockEntity extends BlockEntity implements MenuProvi } this.resetProgress(); - this.setChanged(); } protected boolean canCraftItem() { - Level level = this.getLevel(); - if(level == null) - return false; - SimpleContainer inputInventory = getInputInventory(this); - Optional match = getRecipe(this); - if(match.isEmpty()) { + if(!match.isPresent()) { return false; } - //return false; - return match.isPresent() - && TradingStationBlockEntity.hasEnoughInputItems(inputInventory,match.get().getIngredients()) - && TradingStationBlockEntity.hasEnoughOutputSpace(this.outputItems,match.get().getResultItem()); + return hasEnoughInputItems(inputInventory, match.get().getIngredients()) + && hasEnoughOutputSpace(this.outputItems, match.get().getResultItem()); } private boolean canProcess(ItemStack stack) { return getRecipe(this).isPresent(); } - protected static boolean hasEnoughInputItems(SimpleContainer inventory, NonNullList ingredients){ + protected boolean hasEnoughInputItems(SimpleContainer inventory, NonNullList ingredients){ int enough = 0; for(int ingredientIndex = 0; ingredientIndex < ingredients.size();ingredientIndex ++){ Ingredient ingredient = ingredients.get(ingredientIndex); @@ -360,7 +344,7 @@ public class TradingStationBlockEntity extends BlockEntity implements MenuProvi return ingredients.size() == enough; } - protected static boolean hasEnoughOutputSpace(ItemStackHandler stackHandler,ItemStack resultItemStack){ + protected boolean hasEnoughOutputSpace(ItemStackHandler stackHandler,ItemStack resultItemStack){ return stackHandler.getStackInSlot(0).isEmpty() || stackHandler.getStackInSlot(0).is(resultItemStack.getItem()) && stackHandler.getStackInSlot(0).getMaxStackSize() - stackHandler.getStackInSlot(0).getCount() >= resultItemStack.getCount() ; } diff --git a/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationConfig.java b/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationConfig.java index fcf6ba0..0087630 100644 --- a/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationConfig.java +++ b/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationConfig.java @@ -3,17 +3,15 @@ package com.oierbravo.trading_station.content.trading_station; import net.minecraftforge.common.ForgeConfigSpec; public class TradingStationConfig { - //public static ForgeConfigSpec.IntValue MELTER_CAPACITY; - //public static ForgeConfigSpec.IntValue MELTER_FLUID_PER_TICK; + public static ForgeConfigSpec.IntValue PROGRESS_PER_TICK; - public static void registerServerConfig(ForgeConfigSpec.Builder COMMON_BUILDER) { - /* SERVER_BUILDER.comment("Settings for the trading_station").push("trading_station"); - MELTER_CAPACITY = SERVER_BUILDER - .comment("How much liquid fits into the trading_station, in mB") - .defineInRange("capacity", 1000, 1, Integer.MAX_VALUE); - MELTER_FLUID_PER_TICK = SERVER_BUILDER - .comment("How much liquid generates per tick, in mB") - .defineInRange("liquidPerTick", 2, 1, Integer.MAX_VALUE); - SERVER_BUILDER.pop();*/ + public static void registerCommonConfig(ForgeConfigSpec.Builder COMMON_BUILDER) { + COMMON_BUILDER.comment("Settings for the trading_station").push("trading_station"); + PROGRESS_PER_TICK = COMMON_BUILDER + .comment("How much progress per tick") + .defineInRange("progressPerTick", 1, 1, Integer.MAX_VALUE); + COMMON_BUILDER.pop(); } + + } diff --git a/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationMenu.java b/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationMenu.java index 3b177e7..b35df49 100644 --- a/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationMenu.java +++ b/src/main/java/com/oierbravo/trading_station/content/trading_station/TradingStationMenu.java @@ -1,33 +1,25 @@ package com.oierbravo.trading_station.content.trading_station; import com.oierbravo.trading_station.foundation.gui.AbstractTradingMenu; -import com.oierbravo.trading_station.registrate.ModBlocks; -import com.oierbravo.trading_station.registrate.ModMenus; -import net.minecraft.client.Minecraft; -import net.minecraft.core.BlockPos; +import com.oierbravo.trading_station.registrate.TradingStationRegistrate; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.Component; -import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.*; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.inventory.MenuType; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.SlotItemHandler; import org.jetbrains.annotations.Nullable; public class TradingStationMenu extends AbstractTradingMenu { protected final int[] outputSlotCoords = {131,38}; public TradingStationMenu(int pContainerId, Inventory pInv, BlockEntity pBlockEntity, ContainerData pData) { - super(ModMenus.TRADING_STATION.get(), pContainerId, pInv, pBlockEntity, pData); + super(TradingStationRegistrate.TRADING_STATION_MENU.get(), pContainerId, pInv, pBlockEntity, pData); } public TradingStationMenu(int pContainerId, Inventory inventory, FriendlyByteBuf buf) { - super(ModMenus.TRADING_STATION.get(), pContainerId, inventory, buf); + super(TradingStationRegistrate.TRADING_STATION_MENU.get(), pContainerId, inventory, buf); } public static TradingStationMenu factory(@Nullable MenuType pMenuType, int pContainerId, Inventory inventory, FriendlyByteBuf buf) { @@ -35,7 +27,7 @@ public class TradingStationMenu extends AbstractTradingMenu { } @Override public boolean stillValid(Player pPlayer) { - return stillValid(ContainerLevelAccess.create(level, blockEntity.getBlockPos()), pPlayer, ModBlocks.TRADING_STATION.get()); + return stillValid(ContainerLevelAccess.create(level, blockEntity.getBlockPos()), pPlayer, TradingStationRegistrate.TRADING_STATION_BLOCK.get()); } @Override public int[][] getInputSlotCoords() { diff --git a/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationBlock.java b/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationBlock.java index ec0f2f8..f581eec 100644 --- a/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationBlock.java +++ b/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationBlock.java @@ -1,39 +1,21 @@ package com.oierbravo.trading_station.content.trading_station.powered; import com.oierbravo.trading_station.content.trading_station.TradingStationBlock; -import com.oierbravo.trading_station.content.trading_station.TradingStationBlockEntity; -import com.oierbravo.trading_station.registrate.ModBlockEntities; +import com.oierbravo.trading_station.registrate.PoweredTradingStationRegistrate; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; 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.RenderShape; 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.StateDefinition; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.Shapes; -import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.network.NetworkHooks; import org.jetbrains.annotations.Nullable; -import static net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING; - public class PoweredTradingStationBlock extends TradingStationBlock { @@ -45,7 +27,7 @@ public class PoweredTradingStationBlock extends TradingStationBlock { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { - return ModBlockEntities.POWERED_TRADING_STATION.create(pPos, pState); + return PoweredTradingStationRegistrate.POWERED_TRADING_STATION_BLOCK_ENTITY.create(pPos, pState); } @Nullable @@ -54,7 +36,7 @@ public class PoweredTradingStationBlock extends TradingStationBlock { if(pLevel.isClientSide()) { return null; } - return createTickerHelper(pBlockEntityType, ModBlockEntities.POWERED_TRADING_STATION.get(), + return createTickerHelper(pBlockEntityType, PoweredTradingStationRegistrate.POWERED_TRADING_STATION_BLOCK_ENTITY.get(), (pLevel1, pPos, pState1, pBlockEntity) -> pBlockEntity.tick(pLevel1, pPos, pState1)); } diff --git a/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationBlockEntity.java b/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationBlockEntity.java index 069d0c0..1e31518 100644 --- a/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationBlockEntity.java +++ b/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationBlockEntity.java @@ -1,6 +1,7 @@ package com.oierbravo.trading_station.content.trading_station.powered; import com.oierbravo.trading_station.content.trading_station.TradingStationBlockEntity; +import com.oierbravo.trading_station.content.trading_station.TradingStationConfig; import com.oierbravo.trading_station.foundation.util.ModEnergyStorage; import com.oierbravo.trading_station.foundation.util.ModLang; import net.minecraft.core.BlockPos; @@ -38,7 +39,7 @@ public class PoweredTradingStationBlockEntity extends TradingStationBlockEntity super(pType, pWorldPosition, pBlockState); } private ModEnergyStorage createEnergyStorage() { - return new ModEnergyStorage(64000, 200) { + return new ModEnergyStorage(PoweredTradingStationConfig.ENERGY_CAPACITY.get(), PoweredTradingStationConfig.ENERGY_TRANSFER.get()) { @Override public void onEnergyChanged() { setChanged(); @@ -94,11 +95,11 @@ public class PoweredTradingStationBlockEntity extends TradingStationBlockEntity @Override protected void updateProgress() { - super.updateProgress(); + this.progress += PoweredTradingStationConfig.PROGRESS_PER_TICK.get(); extractEnergy(); } private void extractEnergy() { - this.energyStorage.extractEnergy(1000, false); + this.energyStorage.extractEnergy(PoweredTradingStationConfig.ENERGY_PER_TICK.get(), false); } @Override @@ -107,7 +108,7 @@ public class PoweredTradingStationBlockEntity extends TradingStationBlockEntity if(level == null) return false; - if(this.energyStorage.getEnergyStored() < 1000){ + if(this.energyStorage.getEnergyStored() < PoweredTradingStationConfig.ENERGY_PER_TICK.get()){ return false; } return super.canCraftItem(); diff --git a/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationConfig.java b/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationConfig.java new file mode 100644 index 0000000..514485a --- /dev/null +++ b/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationConfig.java @@ -0,0 +1,28 @@ +package com.oierbravo.trading_station.content.trading_station.powered; + +import net.minecraftforge.common.ForgeConfigSpec; + +public class PoweredTradingStationConfig { + public static ForgeConfigSpec.IntValue PROGRESS_PER_TICK; + public static ForgeConfigSpec.IntValue ENERGY_CAPACITY; + public static ForgeConfigSpec.IntValue ENERGY_TRANSFER; + public static ForgeConfigSpec.IntValue ENERGY_PER_TICK; + + public static void registerCommonConfig(ForgeConfigSpec.Builder COMMON_BUILDER) { + COMMON_BUILDER.comment("Settings for the Powered Trading Station").push("powered_trading_station"); + PROGRESS_PER_TICK = COMMON_BUILDER + .comment("How much progress per tick") + .defineInRange("progressPerTick", 1, 1, Integer.MAX_VALUE); + ENERGY_CAPACITY = COMMON_BUILDER + .comment("How much energy capacity has") + .defineInRange("energyCapacity", 64000, 1, Integer.MAX_VALUE); + ENERGY_TRANSFER = COMMON_BUILDER + .comment("How much energy can transfer") + .defineInRange("energyTransfer", 200, 1, Integer.MAX_VALUE); + ENERGY_PER_TICK = COMMON_BUILDER + .comment("How much energy can transfer") + .defineInRange("energyPerTick", 1000, 1, Integer.MAX_VALUE); + COMMON_BUILDER.pop(); + } + +} diff --git a/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationMenu.java b/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationMenu.java index 7c3fa0b..a123fbb 100644 --- a/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationMenu.java +++ b/src/main/java/com/oierbravo/trading_station/content/trading_station/powered/PoweredTradingStationMenu.java @@ -1,32 +1,23 @@ package com.oierbravo.trading_station.content.trading_station.powered; -import com.oierbravo.trading_station.content.trading_station.ITradingStationBlockEntity; -import com.oierbravo.trading_station.content.trading_station.TradingStationBlockEntity; -import com.oierbravo.trading_station.content.trading_station.TradingStationMenu; -import com.oierbravo.trading_station.content.trading_station.TradingStationScreen; import com.oierbravo.trading_station.foundation.gui.AbstractTradingMenu; -import com.oierbravo.trading_station.registrate.ModBlocks; -import com.oierbravo.trading_station.registrate.ModMenus; -import net.minecraft.client.Minecraft; -import net.minecraft.core.BlockPos; +import com.oierbravo.trading_station.registrate.PoweredTradingStationRegistrate; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.*; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.inventory.MenuType; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.SlotItemHandler; import org.jetbrains.annotations.Nullable; public class PoweredTradingStationMenu extends AbstractTradingMenu { public PoweredTradingStationMenu(int pContainerId, Inventory pInv, BlockEntity pBlockEntity, ContainerData pData) { - super(ModMenus.POWERED_TRADING_STATION.get(), pContainerId, pInv, pBlockEntity, pData); + super(PoweredTradingStationRegistrate.POWERED_TRADING_STATION_MENU.get(), pContainerId, pInv, pBlockEntity, pData); } public PoweredTradingStationMenu(int pContainerId, Inventory inventory, FriendlyByteBuf buf) { - super(ModMenus.POWERED_TRADING_STATION.get(), pContainerId, inventory, buf); + super(PoweredTradingStationRegistrate.POWERED_TRADING_STATION_MENU.get(), pContainerId, inventory, buf); } public static PoweredTradingStationMenu factory(@Nullable MenuType pMenuType, int pContainerId, Inventory inventory, FriendlyByteBuf buf) { @@ -34,7 +25,7 @@ public class PoweredTradingStationMenu extends AbstractTradingMenu { } @Override public boolean stillValid(Player pPlayer) { - return stillValid(ContainerLevelAccess.create(level, blockEntity.getBlockPos()), pPlayer, ModBlocks.POWERED_TRADING_STATION.get()); + return stillValid(ContainerLevelAccess.create(level, blockEntity.getBlockPos()), pPlayer, PoweredTradingStationRegistrate.POWERED_TRADING_STATION_BLOCK.get()); } @Override public int[][] getInputSlotCoords() { diff --git a/src/main/java/com/oierbravo/trading_station/foundation/gui/AbstractTradingMenu.java b/src/main/java/com/oierbravo/trading_station/foundation/gui/AbstractTradingMenu.java index 3b9417f..09f4b73 100644 --- a/src/main/java/com/oierbravo/trading_station/foundation/gui/AbstractTradingMenu.java +++ b/src/main/java/com/oierbravo/trading_station/foundation/gui/AbstractTradingMenu.java @@ -1,12 +1,6 @@ package com.oierbravo.trading_station.foundation.gui; import com.oierbravo.trading_station.content.trading_station.ITradingStationBlockEntity; -import com.oierbravo.trading_station.content.trading_station.TradingStationBlockEntity; -import com.oierbravo.trading_station.content.trading_station.TradingStationScreen; -import com.oierbravo.trading_station.registrate.ModBlocks; -import com.oierbravo.trading_station.registrate.ModMenus; -import net.minecraft.client.Minecraft; -import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; diff --git a/src/main/java/com/oierbravo/trading_station/foundation/util/ModLang.java b/src/main/java/com/oierbravo/trading_station/foundation/util/ModLang.java index d7bbca7..622e90c 100644 --- a/src/main/java/com/oierbravo/trading_station/foundation/util/ModLang.java +++ b/src/main/java/com/oierbravo/trading_station/foundation/util/ModLang.java @@ -3,8 +3,12 @@ package com.oierbravo.trading_station.foundation.util; import com.oierbravo.trading_station.TradingStation; import net.minecraft.network.chat.Component; -public class ModLang { +import java.util.Locale; +public class ModLang { + public static String asId(String name) { + return name.toLowerCase(Locale.ROOT); + } public static Component translate(String key){ return Component.translatable(TradingStation.MODID + '.' + key); } diff --git a/src/main/java/com/oierbravo/trading_station/registrate/Config.java b/src/main/java/com/oierbravo/trading_station/registrate/Config.java index 73a1082..970155c 100644 --- a/src/main/java/com/oierbravo/trading_station/registrate/Config.java +++ b/src/main/java/com/oierbravo/trading_station/registrate/Config.java @@ -1,6 +1,7 @@ package com.oierbravo.trading_station.registrate; import com.oierbravo.trading_station.content.trading_station.TradingStationConfig; +import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationConfig; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.config.ModConfig; @@ -8,8 +9,8 @@ import net.minecraftforge.fml.config.ModConfig; //From https://github.com/McJty/TutorialV3/blob/1.19/src/main/java/com/example/tutorialv3/setup/Config.java public class Config { public static void register() { - registerServerConfigs(); - //registerCommonConfigs(); + //registerServerConfigs(); + registerCommonConfigs(); //registerClientConfigs(); } private static void registerClientConfigs() { @@ -19,12 +20,13 @@ public class Config { private static void registerCommonConfigs() { ForgeConfigSpec.Builder COMMON_BUILDER = new ForgeConfigSpec.Builder(); + TradingStationConfig.registerCommonConfig(COMMON_BUILDER); + PoweredTradingStationConfig.registerCommonConfig(COMMON_BUILDER); ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, COMMON_BUILDER.build()); } private static void registerServerConfigs() { ForgeConfigSpec.Builder SERVER_BUILDER = new ForgeConfigSpec.Builder(); - TradingStationConfig.registerServerConfig(SERVER_BUILDER); ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, SERVER_BUILDER.build()); } } diff --git a/src/main/java/com/oierbravo/trading_station/registrate/MechanicalTradingStationRegistrate.java b/src/main/java/com/oierbravo/trading_station/registrate/MechanicalTradingStationRegistrate.java new file mode 100644 index 0000000..638ac7c --- /dev/null +++ b/src/main/java/com/oierbravo/trading_station/registrate/MechanicalTradingStationRegistrate.java @@ -0,0 +1,47 @@ +package com.oierbravo.trading_station.registrate; + +import com.oierbravo.trading_station.TradingStation; +import com.oierbravo.trading_station.content.trading_station.TradingStationBlockRenderer; +import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationBlock; +import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationBlockEntity; +import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationMenu; +import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationScreen; +import com.tterrag.registrate.util.entry.BlockEntityEntry; +import com.tterrag.registrate.util.entry.BlockEntry; +import com.tterrag.registrate.util.entry.MenuEntry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraftforge.client.model.generators.ConfiguredModel; + +public class MechanicalTradingStationRegistrate { + /*public static final BlockEntry POWERED_TRADING_STATION_BLOCK = TradingStation.registrate() + .block("powered_trading_station", PoweredTradingStationBlock::new) + .lang("Powered Trading Station") + .blockstate((ctx, prov) -> + prov.getVariantBuilder(ctx.getEntry()).forAllStates(state -> { + String modelFileName = "trading_station:block/powered_trading_station"; + if(state.getValue(BlockStateProperties.POWERED)) + modelFileName += "_powered"; + return ConfiguredModel.builder().modelFile(prov.models().getExistingFile(ResourceLocation.tryParse(modelFileName))) + .rotationY(((int) state.getValue(BlockStateProperties.HORIZONTAL_FACING).toYRot() + 180) % 360).build(); + + }) + ) + .simpleItem() + .blockEntity(PoweredTradingStationBlockEntity::new) + .build() + .register(); + + public static final BlockEntityEntry POWERED_TRADING_STATION_BLOCK_ENTITY = TradingStation.registrate() + .blockEntity("powered_trading_station", PoweredTradingStationBlockEntity::new) + .validBlocks(POWERED_TRADING_STATION_BLOCK) + .renderer(() -> TradingStationBlockRenderer::new) + .register(); + + public static final MenuEntry POWERED_TRADING_STATION_MENU = TradingStation.registrate() + .menu("powered_trading_station", PoweredTradingStationMenu::factory, () -> PoweredTradingStationScreen::new) + .register();*/ + public static void register() { + + } +} diff --git a/src/main/java/com/oierbravo/trading_station/registrate/ModBlockEntities.java b/src/main/java/com/oierbravo/trading_station/registrate/ModBlockEntities.java deleted file mode 100644 index f17e74a..0000000 --- a/src/main/java/com/oierbravo/trading_station/registrate/ModBlockEntities.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.oierbravo.trading_station.registrate; - -import com.oierbravo.trading_station.TradingStation; -import com.oierbravo.trading_station.content.trading_station.TradingStationBlockEntity; -import com.oierbravo.trading_station.content.trading_station.TradingStationBlockRenderer; -import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationBlockEntity; -import com.tterrag.registrate.util.entry.BlockEntityEntry; - -public class ModBlockEntities { - public static final BlockEntityEntry TRADING_STATION = TradingStation.registrate() - .blockEntity("trading_station", TradingStationBlockEntity::new) - .validBlocks(ModBlocks.TRADING_STATION) - .renderer(() -> TradingStationBlockRenderer::new) - .register(); - - public static final BlockEntityEntry POWERED_TRADING_STATION = TradingStation.registrate() - .blockEntity("powered_trading_station", PoweredTradingStationBlockEntity::new) - .validBlocks(ModBlocks.POWERED_TRADING_STATION) - .renderer(() -> TradingStationBlockRenderer::new) - .register(); - public static void register() { - - } -} diff --git a/src/main/java/com/oierbravo/trading_station/registrate/ModCreativeTab.java b/src/main/java/com/oierbravo/trading_station/registrate/ModCreativeTab.java index 0c35528..adf3f9b 100644 --- a/src/main/java/com/oierbravo/trading_station/registrate/ModCreativeTab.java +++ b/src/main/java/com/oierbravo/trading_station/registrate/ModCreativeTab.java @@ -3,19 +3,20 @@ package com.oierbravo.trading_station.registrate; import com.oierbravo.trading_station.TradingStation; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; public class ModCreativeTab extends CreativeModeTab { public static ModCreativeTab MAIN; public ModCreativeTab() { - super(TradingStation.DISPLAY_NAME); + super(TradingStation.MODID); MAIN = this; } @Override public ItemStack makeIcon() { - return new ItemStack(ModBlocks.TRADING_STATION.get()); + return new ItemStack(TradingStationRegistrate.TRADING_STATION_BLOCK.get()); } } diff --git a/src/main/java/com/oierbravo/trading_station/registrate/ModMenus.java b/src/main/java/com/oierbravo/trading_station/registrate/ModMenus.java deleted file mode 100644 index 5a28305..0000000 --- a/src/main/java/com/oierbravo/trading_station/registrate/ModMenus.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.oierbravo.trading_station.registrate; - -import com.oierbravo.trading_station.TradingStation; -import com.oierbravo.trading_station.content.trading_station.TradingStationMenu; -import com.oierbravo.trading_station.content.trading_station.TradingStationScreen; -import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationMenu; -import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationScreen; -import com.tterrag.registrate.util.entry.MenuEntry; - -public class ModMenus { - public static final MenuEntry TRADING_STATION = TradingStation.registrate() - .menu("trading_station",TradingStationMenu::factory, () -> TradingStationScreen::new) - .register(); - public static final MenuEntry POWERED_TRADING_STATION = TradingStation.registrate() - .menu("powered_trading_station", PoweredTradingStationMenu::factory, () -> PoweredTradingStationScreen::new) - .register(); - - public static void register() { - - } -} diff --git a/src/main/java/com/oierbravo/trading_station/registrate/ModRecipes.java b/src/main/java/com/oierbravo/trading_station/registrate/ModRecipes.java index 551719a..68076ec 100644 --- a/src/main/java/com/oierbravo/trading_station/registrate/ModRecipes.java +++ b/src/main/java/com/oierbravo/trading_station/registrate/ModRecipes.java @@ -42,6 +42,7 @@ public class ModRecipes { } public static void register(IEventBus eventBus) { + SERIALIZERS.register(eventBus); RECIPE_TYPES.register(eventBus); diff --git a/src/main/java/com/oierbravo/trading_station/registrate/ModBlocks.java b/src/main/java/com/oierbravo/trading_station/registrate/PoweredTradingStationRegistrate.java similarity index 58% rename from src/main/java/com/oierbravo/trading_station/registrate/ModBlocks.java rename to src/main/java/com/oierbravo/trading_station/registrate/PoweredTradingStationRegistrate.java index 686b067..44f53a4 100644 --- a/src/main/java/com/oierbravo/trading_station/registrate/ModBlocks.java +++ b/src/main/java/com/oierbravo/trading_station/registrate/PoweredTradingStationRegistrate.java @@ -1,38 +1,21 @@ package com.oierbravo.trading_station.registrate; import com.oierbravo.trading_station.TradingStation; -import com.oierbravo.trading_station.content.trading_station.TradingStationBlock; -import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationBlock; import com.oierbravo.trading_station.content.trading_station.TradingStationBlockEntity; +import com.oierbravo.trading_station.content.trading_station.TradingStationBlockRenderer; +import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationBlock; import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationBlockEntity; - -import com.tterrag.registrate.Registrate; +import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationMenu; +import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationScreen; +import com.tterrag.registrate.util.entry.BlockEntityEntry; import com.tterrag.registrate.util.entry.BlockEntry; +import com.tterrag.registrate.util.entry.MenuEntry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraftforge.client.model.generators.ConfiguredModel; -public class ModBlocks { - private static final Registrate REGISTRATE = TradingStation.registrate() - .creativeModeTab(() -> ModCreativeTab.MAIN); - public static final BlockEntry TRADING_STATION = TradingStation.registrate() - .block("trading_station", TradingStationBlock::new) - .lang("Trading Station") - .blockstate((ctx, prov) -> - prov.getVariantBuilder(ctx.getEntry()).forAllStates(state -> { - String modelFileName = "trading_station:block/trading_station"; - if(state.getValue(BlockStateProperties.POWERED)) - modelFileName += "_powered"; - return ConfiguredModel.builder().modelFile(prov.models().getExistingFile(ResourceLocation.tryParse(modelFileName))) - .rotationY(((int) state.getValue(BlockStateProperties.HORIZONTAL_FACING).toYRot() + 180) % 360).build(); - - }) - ) - .simpleItem() - .blockEntity(TradingStationBlockEntity::new) - .build() - .register(); - public static final BlockEntry POWERED_TRADING_STATION = TradingStation.registrate() +public class PoweredTradingStationRegistrate { + public static final BlockEntry POWERED_TRADING_STATION_BLOCK = TradingStation.registrate() .block("powered_trading_station", PoweredTradingStationBlock::new) .lang("Powered Trading Station") .blockstate((ctx, prov) -> @@ -49,6 +32,16 @@ public class ModBlocks { .blockEntity(PoweredTradingStationBlockEntity::new) .build() .register(); + + public static final BlockEntityEntry POWERED_TRADING_STATION_BLOCK_ENTITY = TradingStation.registrate() + .blockEntity("powered_trading_station", PoweredTradingStationBlockEntity::new) + .validBlocks(POWERED_TRADING_STATION_BLOCK) + .renderer(() -> TradingStationBlockRenderer::new) + .register(); + + public static final MenuEntry POWERED_TRADING_STATION_MENU = TradingStation.registrate() + .menu("powered_trading_station", PoweredTradingStationMenu::factory, () -> PoweredTradingStationScreen::new) + .register(); public static void register() { } diff --git a/src/main/java/com/oierbravo/trading_station/registrate/TradingStationRegistrate.java b/src/main/java/com/oierbravo/trading_station/registrate/TradingStationRegistrate.java new file mode 100644 index 0000000..665f5b5 --- /dev/null +++ b/src/main/java/com/oierbravo/trading_station/registrate/TradingStationRegistrate.java @@ -0,0 +1,48 @@ +package com.oierbravo.trading_station.registrate; + +import com.oierbravo.trading_station.TradingStation; +import com.oierbravo.trading_station.content.trading_station.*; +import com.oierbravo.trading_station.content.trading_station.powered.PoweredTradingStationBlockEntity; +import com.tterrag.registrate.Registrate; +import com.tterrag.registrate.util.entry.BlockEntityEntry; +import com.tterrag.registrate.util.entry.BlockEntry; +import com.tterrag.registrate.util.entry.MenuEntry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraftforge.client.model.generators.ConfiguredModel; + +public class TradingStationRegistrate { + private static final Registrate REGISTRATE = TradingStation.registrate() + .creativeModeTab(() -> ModCreativeTab.MAIN); + + public static final BlockEntry TRADING_STATION_BLOCK = TradingStation.registrate() + .block("trading_station", TradingStationBlock::new) + .lang("Trading Station") + .blockstate((ctx, prov) -> + prov.getVariantBuilder(ctx.getEntry()).forAllStates(state -> { + String modelFileName = "trading_station:block/trading_station"; + if(state.getValue(BlockStateProperties.POWERED)) + modelFileName += "_powered"; + return ConfiguredModel.builder().modelFile(prov.models().getExistingFile(ResourceLocation.tryParse(modelFileName))) + .rotationY(((int) state.getValue(BlockStateProperties.HORIZONTAL_FACING).toYRot() + 180) % 360).build(); + + }) + ) + .simpleItem() + .blockEntity(TradingStationBlockEntity::new) + .build() + .register(); + public static final BlockEntityEntry TRADING_STATION_BLOCK_ENTITY = REGISTRATE + .blockEntity("trading_station", TradingStationBlockEntity::new) + .validBlocks(TRADING_STATION_BLOCK) + .renderer(() -> TradingStationBlockRenderer::new) + .register(); + + public static final MenuEntry TRADING_STATION_MENU = REGISTRATE + .menu("trading_station",TradingStationMenu::factory, () -> TradingStationScreen::new) + .register(); + + public static void register() { + + } +} diff --git a/src/main/resources/assets/trading_station/textures/block/powered_trading_station_powered.png b/src/main/resources/assets/trading_station/textures/block/powered_trading_station_powered.png index c63291d5de386d291983ace418bc4fae7acb2b73..b73bdf355285600b0176419cd704ad8e2aaa9e4f 100644 GIT binary patch delta 1432 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 bng{*@^WAWbT6qj<00000NkvXXu0mjfoMyx%