From a1267f5821e7df18444c5a1a8923e6cbbbef4141 Mon Sep 17 00:00:00 2001 From: Xenthio Date: Tue, 24 Sep 2024 20:03:32 +1000 Subject: [PATCH 1/9] Experiment with getting this working. --- .../nostalgic/config/ClientConfig.java | 1 + .../ClassicCreativeModeInventoryScreen.java | 19 +++++ .../CreativeModeInventoryScreenMixin.java | 78 +++++++++++++++++++ .../nostalgic/tweak/config/CandyTweak.java | 1 + .../resources/mixin.nostalgic_tweaks.json | 1 + 5 files changed, 100 insertions(+) create mode 100644 common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java create mode 100644 common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java diff --git a/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java b/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java index d8d7eca6d..ca6a21b0b 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java +++ b/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java @@ -338,6 +338,7 @@ public static class EyeCandy public boolean disableEmptyShieldTexture = CandyTweak.DISABLE_EMPTY_SHIELD_TEXTURE.register("disableEmptyShieldTexture"); public boolean invertedPlayerLighting = CandyTweak.INVERTED_PLAYER_LIGHTING.register("invertedPlayerLighting"); public Hotbar oldCreativeHotbar = CandyTweak.OLD_CREATIVE_HOTBAR.register("oldCreativeHotbar"); + public boolean oldCreativeInventory = CandyTweak.OLD_CREATIVE_INVENTORY.register("oldCreativeInventory"); // Generic Screen diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java new file mode 100644 index 000000000..146f01a40 --- /dev/null +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java @@ -0,0 +1,19 @@ +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.TooltipFlag; + +/* +@Environment(EnvType.CLIENT) +public class ClassicCreativeModeInventoryScreen extends EffectRenderingInventoryScreen { + public CreativeModeInventoryScreen(LocalPlayer localPlayer, FeatureFlagSet featureFlagSet, boolean bl) { + super(new CreativeModeInventoryScreen.ItemPickerMenu(localPlayer), localPlayer.getInventory(), CommonComponents.EMPTY); + localPlayer.containerMenu = this.menu; + this.imageHeight = 136; + this.imageWidth = 195; + this.displayOperatorCreativeTab = bl; + this.tryRebuildTabContents(localPlayer.connection.searchTrees(), featureFlagSet, this.hasPermissions(localPlayer), localPlayer.level().registryAccess()); + } +}*/ diff --git a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java new file mode 100644 index 000000000..33231fbec --- /dev/null +++ b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java @@ -0,0 +1,78 @@ +package mod.adrenix.nostalgic.mixin.tweak.candy.inventory_screen; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import mod.adrenix.nostalgic.helper.candy.screen.inventory.InventoryScreenHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; +import net.minecraft.client.gui.screens.inventory.InventoryScreen; +import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.flag.FeatureFlagSet; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.CopperBulbBlock; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +// Menu test, might need to have it be its own thing? +@Mixin(CreativeModeInventoryScreen.class) +public abstract class CreativeModeInventoryScreenMixin extends AbstractContainerScreen { + private CreativeModeInventoryScreenMixin(CreativeModeInventoryScreen.ItemPickerMenu menu, Inventory playerInventory, Component title) + { + super(menu, playerInventory, title); + } + + + @ModifyReturnValue( + method = "getDisplayItems", + at = @At("RETURN") + ) + public Collection nt_creative_inventory_screen$GetItems(Collection original, CallbackInfo callback) { + var items = new ArrayList(); + + items.add(new ItemStack(Items.COBBLESTONE)); + items.add(new ItemStack(Items.STONE)); + items.add(new ItemStack(Items.DIAMOND_ORE)); + items.add(new ItemStack(Items.GOLD_ORE)); + items.add(new ItemStack(Items.IRON_ORE)); + items.add(new ItemStack(Items.COAL_ORE)); + items.add(new ItemStack(Items.LAPIS_ORE)); + items.add(new ItemStack(Items.REDSTONE_ORE)); + items.add(new ItemStack(Items.STONE_BRICKS)); + items.add(new ItemStack(Items.MOSSY_STONE_BRICKS)); + items.add(new ItemStack(Items.CRACKED_STONE_BRICKS)); + items.add(new ItemStack(Items.CHISELED_STONE_BRICKS)); + items.add(new ItemStack(Items.CLAY)); + items.add(new ItemStack(Items.DIAMOND_BLOCK)); + items.add(new ItemStack(Items.GOLD_BLOCK)); + items.add(new ItemStack(Items.IRON_BLOCK)); + items.add(new ItemStack(Items.LAPIS_BLOCK)); + items.add(new ItemStack(Items.BRICKS)); + items.add(new ItemStack(Items.MOSSY_COBBLESTONE)); + items.add(new ItemStack(Items.SMOOTH_STONE_SLAB)); + items.add(new ItemStack(Items.SANDSTONE_SLAB)); + items.add(new ItemStack(Items.OAK_SLAB)); + items.add(new ItemStack(Items.COBBLESTONE_SLAB)); + items.add(new ItemStack(Items.STONE_BRICK_SLAB)); + System.out.println("hi"); + return items; + } + + +} diff --git a/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java b/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java index e20ab7f04..98ddeaf60 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java +++ b/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java @@ -179,6 +179,7 @@ public interface CandyTweak TweakFlag DISABLE_EMPTY_SHIELD_TEXTURE = TweakFlag.client(false, CandyGroup.INTERFACE_INVENTORY).build(); TweakFlag INVERTED_PLAYER_LIGHTING = TweakFlag.client(true, CandyGroup.INTERFACE_INVENTORY).build(); TweakEnum OLD_CREATIVE_HOTBAR = TweakEnum.server(Hotbar.CLASSIC, CandyGroup.INTERFACE_INVENTORY).ignoreNetworkCheck().whenDisabled(Hotbar.MODERN).build(); + TweakFlag OLD_CREATIVE_INVENTORY= TweakFlag.server(false, CandyGroup.INTERFACE_INVENTORY).ignoreNetworkCheck().build(); // Generic Screen diff --git a/common/src/main/resources/mixin.nostalgic_tweaks.json b/common/src/main/resources/mixin.nostalgic_tweaks.json index abdd749c8..62dea5010 100644 --- a/common/src/main/resources/mixin.nostalgic_tweaks.json +++ b/common/src/main/resources/mixin.nostalgic_tweaks.json @@ -80,6 +80,7 @@ "candy.missing_texture.MissingTextureAtlasSpriteMixin", "candy.name_tag.EntityRendererMixin", "candy.old_hud.GuiMixin", + "candy.inventory_screen.CreativeModeInventoryScreenMixin", "candy.particle_engine.ParticleEngineMixin", "candy.player_particles.ClientLevelMixin", "candy.player_particles.EntityMixin", From 7ced906721532d4374ac7925a7a8e92ed163352b Mon Sep 17 00:00:00 2001 From: Xenthio Date: Tue, 24 Sep 2024 20:20:21 +1000 Subject: [PATCH 2/9] Test2 --- .../ClassicCreativeModeInventoryScreen.java | 44 ++++++++++++++++--- .../CreativeModeInventoryScreenMixin.java | 12 +++-- 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java index 146f01a40..b2580a3f4 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java @@ -1,3 +1,15 @@ +package mod.adrenix.nostalgic.helper.candy.screen.inventory; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; +import net.minecraft.client.gui.screens.inventory.EffectRenderingInventoryScreen; +import net.minecraft.client.gui.screens.inventory.InventoryScreen; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.network.chat.CommonComponents; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.Item; @@ -5,15 +17,33 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; -/* +import java.util.Iterator; + + @Environment(EnvType.CLIENT) -public class ClassicCreativeModeInventoryScreen extends EffectRenderingInventoryScreen { - public CreativeModeInventoryScreen(LocalPlayer localPlayer, FeatureFlagSet featureFlagSet, boolean bl) { +public class ClassicCreativeModeInventoryScreen extends EffectRenderingInventoryScreen { + private static final int NUM_ROWS = 9; + private static final int NUM_COLS = 8; + + public ClassicCreativeModeInventoryScreen(LocalPlayer localPlayer) { super(new CreativeModeInventoryScreen.ItemPickerMenu(localPlayer), localPlayer.getInventory(), CommonComponents.EMPTY); localPlayer.containerMenu = this.menu; this.imageHeight = 136; - this.imageWidth = 195; - this.displayOperatorCreativeTab = bl; - this.tryRebuildTabContents(localPlayer.connection.searchTrees(), featureFlagSet, this.hasPermissions(localPlayer), localPlayer.level().registryAccess()); + this.imageWidth = 195;; + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { + + guiGraphics.blit(selectedTab.getBackgroundTexture(), this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight); + this.searchBox.render(guiGraphics, mouseX, mouseY, partialTick); + int i = this.leftPos + 175; + int j = this.topPos + 18; + int k = j + 112; + if (selectedTab.canScroll()) { + ResourceLocation resourceLocation = this.canScroll() ? SCROLLER_SPRITE : SCROLLER_DISABLED_SPRITE; + guiGraphics.blitSprite(resourceLocation, i, j + (int)((float)(k - j - 17) * this.scrollOffs), 12, 15); + } + } -}*/ +} diff --git a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java index 33231fbec..04e31d4d9 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java +++ b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java @@ -1,6 +1,7 @@ package mod.adrenix.nostalgic.mixin.tweak.candy.inventory_screen; import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import mod.adrenix.nostalgic.helper.candy.screen.inventory.ClassicCreativeModeInventoryScreen; import mod.adrenix.nostalgic.helper.candy.screen.inventory.InventoryScreenHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; @@ -39,11 +40,14 @@ private CreativeModeInventoryScreenMixin(CreativeModeInventoryScreen.ItemPickerM } - @ModifyReturnValue( - method = "getDisplayItems", - at = @At("RETURN") + @Inject( + method = "containerTick", + at = @At("HEAD") ) - public Collection nt_creative_inventory_screen$GetItems(Collection original, CallbackInfo callback) { + public void nt_creative_inventory$containerTick(CallbackInfo callback) { + this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen(this.minecraft.player )); + } + public Collection GetItems() { var items = new ArrayList(); items.add(new ItemStack(Items.COBBLESTONE)); From e64c29d27c1fa01bffb25f245931ff57b90380f2 Mon Sep 17 00:00:00 2001 From: Xenthio Date: Wed, 25 Sep 2024 11:22:31 +1000 Subject: [PATCH 3/9] Get things mostly function, some strange behaviour exists still --- .../ClassicCreativeModeInventoryScreen.java | 250 ++++++++++++++++-- .../CreativeModeInventoryScreenMixin.java | 38 +-- .../util/common/asset/TextureLocation.java | 1 + .../textures/gui/allitems.png | Bin 0 -> 2055 bytes 4 files changed, 240 insertions(+), 49 deletions(-) create mode 100644 common/src/main/resources/assets/nostalgic_tweaks/textures/gui/allitems.png diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java index b2580a3f4..67a441c98 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java @@ -1,49 +1,269 @@ package mod.adrenix.nostalgic.helper.candy.screen.inventory; +import mod.adrenix.nostalgic.util.common.asset.TextureLocation; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.loader.impl.util.Localization; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; -import net.minecraft.client.gui.screens.inventory.EffectRenderingInventoryScreen; -import net.minecraft.client.gui.screens.inventory.InventoryScreen; +import net.minecraft.client.gui.screens.inventory.*; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.client.multiplayer.SessionSearchTrees; import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.searchtree.SearchTree; +import net.minecraft.core.component.DataComponents; +import net.minecraft.locale.Language; import net.minecraft.network.chat.CommonComponents; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.flag.FeatureFlagSet; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.block.Blocks; +import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; +import java.util.Locale; @Environment(EnvType.CLIENT) -public class ClassicCreativeModeInventoryScreen extends EffectRenderingInventoryScreen { +public class ClassicCreativeModeInventoryScreen extends EffectRenderingInventoryScreen { private static final int NUM_ROWS = 9; private static final int NUM_COLS = 8; + private static final int CONTAINER_SIZE = 72; + static final SimpleContainer CONTAINER = new SimpleContainer(CONTAINER_SIZE); + private CreativeInventoryListener listener; public ClassicCreativeModeInventoryScreen(LocalPlayer localPlayer) { - super(new CreativeModeInventoryScreen.ItemPickerMenu(localPlayer), localPlayer.getInventory(), CommonComponents.EMPTY); + super(new ClassicCreativeModeInventoryScreen.ClassicItemPickerMenu(localPlayer), localPlayer.getInventory(), CommonComponents.EMPTY); localPlayer.containerMenu = this.menu; - this.imageHeight = 136; - this.imageWidth = 195;; + this.menu.minecraft = this.minecraft; + this.imageHeight = 208; + this.imageWidth = 176; + this.leftPos = (this.width - this.imageWidth) / 2; + this.topPos = (this.height - this.imageHeight) / 2; + this.menu.refreshItems(); + } + + @Override + protected void init() { + super.init(); + + this.minecraft.player.inventoryMenu.removeSlotListener(this.listener); + this.listener = new CreativeInventoryListener(this.minecraft); + this.minecraft.player.inventoryMenu.addSlotListener(this.listener); + } + + private boolean hasClickedOutside; + @Override + protected void slotClicked(@Nullable Slot slot, int slotId, int mouseButton, ClickType type) { + boolean bl = type == ClickType.QUICK_MOVE; + type = slotId == -999 && type == ClickType.PICKUP ? ClickType.THROW : type; + if (slot != null && !slot.mayPickup(this.minecraft.player)) { + return; + } + if (slot == null) return; + ItemStack itemStack = ((CreativeModeInventoryScreen.ItemPickerMenu) this.menu).getCarried(); + ItemStack itemStack2 = slot.getItem(); + int j; + if (slot.container == CONTAINER) { + if (type == ClickType.SWAP) { + if (!itemStack2.isEmpty()) { + this.minecraft.player.getInventory().setItem(mouseButton, itemStack2.copyWithCount(itemStack2.getMaxStackSize())); + this.minecraft.player.inventoryMenu.broadcastChanges(); + } + + return; + } + + ItemStack itemStack3; + if (type == ClickType.CLONE) { + if (((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried().isEmpty() && slot.hasItem()) { + itemStack3 = slot.getItem(); + ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).setCarried(itemStack3.copyWithCount(itemStack3.getMaxStackSize())); + } + + return; + } + + if (type == ClickType.THROW) { + if (!itemStack2.isEmpty()) { + itemStack3 = itemStack2.copyWithCount(mouseButton == 0 ? 1 : itemStack2.getMaxStackSize()); + this.minecraft.player.drop(itemStack3, true); + this.minecraft.gameMode.handleCreativeModeItemDrop(itemStack3); + } + + return; + } + + if (!itemStack.isEmpty() && !itemStack2.isEmpty() && ItemStack.isSameItemSameComponents(itemStack, itemStack2)) { + if (mouseButton == 0) { + if (bl) { + itemStack.setCount(itemStack.getMaxStackSize()); + } else if (itemStack.getCount() < itemStack.getMaxStackSize()) { + itemStack.grow(1); + } + } else { + itemStack.shrink(1); + } + } else if (!itemStack2.isEmpty() && itemStack.isEmpty()) { + j = bl ? itemStack2.getMaxStackSize() : itemStack2.getCount(); + ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).setCarried(itemStack2.copyWithCount(j)); + } else if (mouseButton == 0) { + ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).setCarried(ItemStack.EMPTY); + } else if (!((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried().isEmpty()) { + ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried().shrink(1); + } + } else if (this.menu != null) { + var ff = CONTAINER_SIZE; + var ts = CONTAINER_SIZE - 9; + itemStack = slot == null ? ItemStack.EMPTY : ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getSlot(slot.index).getItem(); + ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).clicked(slot == null ? slotId : slot.index, mouseButton, type, this.minecraft.player); + if (AbstractContainerMenu.getQuickcraftHeader(mouseButton) == 2) { + for(int k = 0; k < 9; ++k) { + this.minecraft.gameMode.handleCreativeModeItemAdd(((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getSlot(CONTAINER_SIZE + k).getItem(), ts + k); + } + } else if (slot != null) { + itemStack2 = ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getSlot(slot.index).getItem(); + this.minecraft.gameMode.handleCreativeModeItemAdd(itemStack2, slot.index - ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).slots.size() + 9 + ts); + j = ff + mouseButton; + if (type == ClickType.SWAP) { + this.minecraft.gameMode.handleCreativeModeItemAdd(itemStack, j - ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).slots.size() + 9 + ts); + } else if (type == ClickType.THROW && !itemStack.isEmpty()) { + ItemStack itemStack4 = itemStack.copyWithCount(mouseButton == 0 ? 1 : itemStack.getMaxStackSize()); + this.minecraft.player.drop(itemStack4, true); + this.minecraft.gameMode.handleCreativeModeItemDrop(itemStack4); + } + + this.minecraft.player.inventoryMenu.broadcastChanges(); + } + } + } + + @Override + protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, "Item Selection", this.titleLabelX, this.titleLabelY, 4210752, false); } @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { + guiGraphics.blit(TextureLocation.ALL_ITEMS, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight); + } + @Environment(EnvType.CLIENT) + private static class CustomCreativeSlot extends Slot { + public CustomCreativeSlot(Container container, int slot, int x, int y) { + super(container, slot, x, y); + } + + public boolean mayPickup(Player player) { + ItemStack itemStack = this.getItem(); + if (super.mayPickup(player) && !itemStack.isEmpty()) { + return itemStack.isItemEnabled(player.level().enabledFeatures()) && !itemStack.has(DataComponents.CREATIVE_SLOT_LOCK); + } else { + return itemStack.isEmpty(); + } + } + + } + + public static class ClassicItemPickerMenu extends CreativeModeInventoryScreen.ItemPickerMenu { + + Player localPlayer; + Minecraft minecraft; + public float currentScroll = 0.0f; - guiGraphics.blit(selectedTab.getBackgroundTexture(), this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight); - this.searchBox.render(guiGraphics, mouseX, mouseY, partialTick); - int i = this.leftPos + 175; - int j = this.topPos + 18; - int k = j + 112; - if (selectedTab.canScroll()) { - ResourceLocation resourceLocation = this.canScroll() ? SCROLLER_SPRITE : SCROLLER_DISABLED_SPRITE; - guiGraphics.blitSprite(resourceLocation, i, j + (int)((float)(k - j - 17) * this.scrollOffs), 12, 15); + public Collection GetItems() { + var items = new ArrayList(); + + items.add(new ItemStack(Items.COBBLESTONE)); + items.add(new ItemStack(Items.STONE)); + items.add(new ItemStack(Items.DIAMOND_ORE)); + items.add(new ItemStack(Items.GOLD_ORE)); + items.add(new ItemStack(Items.IRON_ORE)); + items.add(new ItemStack(Items.COAL_ORE)); + items.add(new ItemStack(Items.LAPIS_ORE)); + items.add(new ItemStack(Items.REDSTONE_ORE)); + items.add(new ItemStack(Items.STONE_BRICKS)); + items.add(new ItemStack(Items.MOSSY_STONE_BRICKS)); + items.add(new ItemStack(Items.CRACKED_STONE_BRICKS)); + items.add(new ItemStack(Items.CHISELED_STONE_BRICKS)); + items.add(new ItemStack(Items.CLAY)); + items.add(new ItemStack(Items.DIAMOND_BLOCK)); + items.add(new ItemStack(Items.GOLD_BLOCK)); + items.add(new ItemStack(Items.IRON_BLOCK)); + items.add(new ItemStack(Items.LAPIS_BLOCK)); + items.add(new ItemStack(Items.BRICKS)); + items.add(new ItemStack(Items.MOSSY_COBBLESTONE)); + items.add(new ItemStack(Items.SMOOTH_STONE_SLAB)); + items.add(new ItemStack(Items.SANDSTONE_SLAB)); + items.add(new ItemStack(Items.OAK_SLAB)); + items.add(new ItemStack(Items.COBBLESTONE_SLAB)); + items.add(new ItemStack(Items.STONE_BRICK_SLAB)); + + if (this.minecraft != null) { + ClientPacketListener clientPacketListener = this.minecraft.getConnection(); + SessionSearchTrees sessionSearchTrees = clientPacketListener.searchTrees(); + SearchTree searchTree; + searchTree = sessionSearchTrees.creativeTagSearch(); + String string = ""; + items.addAll(searchTree.search(string.toLowerCase(Locale.ROOT))); + } + + System.out.println("hi"); + return items; } + public ClassicItemPickerMenu(Player player) { + super(player); + this.localPlayer = player; + this.slots.clear(); + refreshItems(); + Inventory inventory = player.getInventory(); + + int i; + for(i = 0; i < NUM_ROWS; ++i) { + for(int j = 0; j < NUM_COLS; ++j) { + this.addSlot(new ClassicCreativeModeInventoryScreen.CustomCreativeSlot(ClassicCreativeModeInventoryScreen.CONTAINER, i * 8 + j, 8 + j * 18, 18 + i * 18)); + } + } + + for(i = 0; i < 9; ++i) { + this.addSlot(new Slot(inventory, i, 8 + i * 18, 184)); + } + this.scrollTo(0.0F); + } + public void refreshItems() { + this.items.clear(); + this.items.addAll(GetItems()); + } + + @Override + public void scrollTo(float pos) { + System.out.println("hi2"); + int i = this.getRowIndexForScroll(pos); + this.currentScroll = pos; + for(int j = 0; j < NUM_ROWS; ++j) { + for(int k = 0; k < NUM_COLS; ++k) { + int l = k + (j + i) * NUM_COLS; + if (l >= 0 && l < this.items.size()) { + ClassicCreativeModeInventoryScreen.CONTAINER.setItem(k + j * NUM_COLS, (ItemStack)this.items.get(l)); + } else { + ClassicCreativeModeInventoryScreen.CONTAINER.setItem(k + j * NUM_COLS, ItemStack.EMPTY); + } + } + } + } } } diff --git a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java index 04e31d4d9..9642f5c24 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java +++ b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java @@ -4,21 +4,20 @@ import mod.adrenix.nostalgic.helper.candy.screen.inventory.ClassicCreativeModeInventoryScreen; import mod.adrenix.nostalgic.helper.candy.screen.inventory.InventoryScreenHelper; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; import net.minecraft.client.gui.screens.inventory.InventoryScreen; import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent; import net.minecraft.client.player.LocalPlayer; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.InventoryMenu; -import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; +import net.minecraft.world.item.*; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.CopperBulbBlock; import org.spongepowered.asm.mixin.Final; @@ -30,6 +29,7 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Iterator; import java.util.List; // Menu test, might need to have it be its own thing? @Mixin(CreativeModeInventoryScreen.class) @@ -47,36 +47,6 @@ private CreativeModeInventoryScreenMixin(CreativeModeInventoryScreen.ItemPickerM public void nt_creative_inventory$containerTick(CallbackInfo callback) { this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen(this.minecraft.player )); } - public Collection GetItems() { - var items = new ArrayList(); - - items.add(new ItemStack(Items.COBBLESTONE)); - items.add(new ItemStack(Items.STONE)); - items.add(new ItemStack(Items.DIAMOND_ORE)); - items.add(new ItemStack(Items.GOLD_ORE)); - items.add(new ItemStack(Items.IRON_ORE)); - items.add(new ItemStack(Items.COAL_ORE)); - items.add(new ItemStack(Items.LAPIS_ORE)); - items.add(new ItemStack(Items.REDSTONE_ORE)); - items.add(new ItemStack(Items.STONE_BRICKS)); - items.add(new ItemStack(Items.MOSSY_STONE_BRICKS)); - items.add(new ItemStack(Items.CRACKED_STONE_BRICKS)); - items.add(new ItemStack(Items.CHISELED_STONE_BRICKS)); - items.add(new ItemStack(Items.CLAY)); - items.add(new ItemStack(Items.DIAMOND_BLOCK)); - items.add(new ItemStack(Items.GOLD_BLOCK)); - items.add(new ItemStack(Items.IRON_BLOCK)); - items.add(new ItemStack(Items.LAPIS_BLOCK)); - items.add(new ItemStack(Items.BRICKS)); - items.add(new ItemStack(Items.MOSSY_COBBLESTONE)); - items.add(new ItemStack(Items.SMOOTH_STONE_SLAB)); - items.add(new ItemStack(Items.SANDSTONE_SLAB)); - items.add(new ItemStack(Items.OAK_SLAB)); - items.add(new ItemStack(Items.COBBLESTONE_SLAB)); - items.add(new ItemStack(Items.STONE_BRICK_SLAB)); - System.out.println("hi"); - return items; - } } diff --git a/common/src/main/java/mod/adrenix/nostalgic/util/common/asset/TextureLocation.java b/common/src/main/java/mod/adrenix/nostalgic/util/common/asset/TextureLocation.java index 70aaca177..4b7cfe286 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/util/common/asset/TextureLocation.java +++ b/common/src/main/java/mod/adrenix/nostalgic/util/common/asset/TextureLocation.java @@ -11,6 +11,7 @@ public class TextureLocation public static final ResourceLocation DEV_MODE = ModAsset.texture("gui/nt_dev.png"); public static final ResourceLocation BLOCK_SHADOW = ModAsset.texture("block_shadow.png"); public static final ResourceLocation INVENTORY = ModAsset.texture("gui/inventory.png"); + public static final ResourceLocation ALL_ITEMS = ModAsset.texture("gui/allitems.png"); public static final ResourceLocation MOJANG_ALPHA = ModAsset.texture("gui/mojang_alpha.png"); public static final ResourceLocation MOJANG_BETA = ModAsset.texture("gui/mojang_beta.png"); public static final ResourceLocation MOJANG_RELEASE_ORANGE = ModAsset.texture("gui/mojang_release_orange.png"); diff --git a/common/src/main/resources/assets/nostalgic_tweaks/textures/gui/allitems.png b/common/src/main/resources/assets/nostalgic_tweaks/textures/gui/allitems.png new file mode 100644 index 0000000000000000000000000000000000000000..e1e5d77973f1dc696ecc0df1b784613c90654e2c GIT binary patch literal 2055 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(0|PTd zfKP}kP~62^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;5!Jyj5{V~zXb|PmbgZg1m~xflqVLYG6W=M=9TFAxrQi|8S9zqS(sZl z!~#o{98VX=kczmscMq1WHsEm$WS{i^e@fiRs$8cN0o&Fb{WhU7dtGZy>62}_x1;86 zJlel)tNYxGRvZB@|H^-_V7;YxVDG7jX$7ohjH~wi`|HOb_&~VBj{OOP=LO9N5>J>< zX&m4%bm|GvS1$Q2ll^Y8t*&g?hIjr}&l+z3GL+ltKaXjT{>#b;;RW$RXYRiL>@Ut} z$7tywRKjJ!c3&IDSqh}e#ktK zn8FTG zeg=0rf3XB9?vPPnKfx&PHi!R$f@8-1yc?Xn1c7i0>fvS7HF(MoSQN5n&-VP12%UCKLQ@HJc|4DVa?TCK~xzpPJigTMWM1&94I2LIpvX8HB3!C#{$I=%XmB~zL;+kW{T*~tow ze!Q=4s(j=u@oQ2_Sa)rP%8##?dV&|s7oDg3{5MMt)BSh7CmD+lq|R8NqQS}M*R(nC z;pZx=@a7o_oUB&A8id~0|2%f$k}}h_Z;P|%3g)+LTYI(gZ-x4vw_V$;ly{i#+h6l% z%GR_$f)74QWv@NzzNSq4K`D!#VDPnBk2Mdhf4eU}v|+!%j#Ugw56oFy9M-akZH!vp z5Zu83fZ4*)?!hg)gj!}LLG|plmLD3Tev9sp5)@dUxmMEEVeQ|p__Z7z*SB2jQCe`V z?&$h3mLu6w*=~XX+4~=bYcoAEU2D3SW5w3^kE=x)KhC-~E0E>Nt@S^yb~RM^W}nqy z%6c3AC(G4g&$6v)B8*$VY1eI4Qi!`8W&Dr%)V3`-2c~$ofC_3)S3j3^P6 Date: Wed, 25 Sep 2024 15:24:34 +1000 Subject: [PATCH 4/9] Bunch of function --- .../ClassicCreativeModeInventoryScreen.java | 156 +++++---- .../ClassicCreativeModeItemHelper.java | 317 ++++++++++++++++++ 2 files changed, 414 insertions(+), 59 deletions(-) create mode 100644 common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeItemHelper.java diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java index 67a441c98..d5e5cb767 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java @@ -1,5 +1,6 @@ package mod.adrenix.nostalgic.helper.candy.screen.inventory; +import com.google.common.reflect.Reflection; import mod.adrenix.nostalgic.util.common.asset.TextureLocation; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -11,10 +12,15 @@ import net.minecraft.client.multiplayer.SessionSearchTrees; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.searchtree.SearchTree; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; import net.minecraft.core.component.DataComponents; +import net.minecraft.data.tags.ItemTagsProvider; import net.minecraft.locale.Language; import net.minecraft.network.chat.CommonComponents; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.ItemTags; +import net.minecraft.util.Mth; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; @@ -23,12 +29,8 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ClickType; import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.*; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import org.jetbrains.annotations.Nullable; @@ -90,9 +92,9 @@ protected void slotClicked(@Nullable Slot slot, int slotId, int mouseButton, Cli ItemStack itemStack3; if (type == ClickType.CLONE) { - if (((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried().isEmpty() && slot.hasItem()) { + if (this.menu.getCarried().isEmpty() && slot.hasItem()) { itemStack3 = slot.getItem(); - ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).setCarried(itemStack3.copyWithCount(itemStack3.getMaxStackSize())); + this.menu.setCarried(itemStack3.copyWithCount(itemStack3.getMaxStackSize())); } return; @@ -120,27 +122,27 @@ protected void slotClicked(@Nullable Slot slot, int slotId, int mouseButton, Cli } } else if (!itemStack2.isEmpty() && itemStack.isEmpty()) { j = bl ? itemStack2.getMaxStackSize() : itemStack2.getCount(); - ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).setCarried(itemStack2.copyWithCount(j)); + this.menu.setCarried(itemStack2.copyWithCount(j)); } else if (mouseButton == 0) { - ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).setCarried(ItemStack.EMPTY); - } else if (!((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried().isEmpty()) { - ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried().shrink(1); + this.menu.setCarried(ItemStack.EMPTY); + } else if (!this.menu.getCarried().isEmpty()) { + this.menu.getCarried().shrink(1); } } else if (this.menu != null) { var ff = CONTAINER_SIZE; var ts = CONTAINER_SIZE - 9; - itemStack = slot == null ? ItemStack.EMPTY : ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getSlot(slot.index).getItem(); - ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).clicked(slot == null ? slotId : slot.index, mouseButton, type, this.minecraft.player); + itemStack = slot == null ? ItemStack.EMPTY : this.menu.getSlot(slot.index).getItem(); + this.menu.clicked(slot == null ? slotId : slot.index, mouseButton, type, this.minecraft.player); if (AbstractContainerMenu.getQuickcraftHeader(mouseButton) == 2) { for(int k = 0; k < 9; ++k) { - this.minecraft.gameMode.handleCreativeModeItemAdd(((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getSlot(CONTAINER_SIZE + k).getItem(), ts + k); + this.minecraft.gameMode.handleCreativeModeItemAdd(this.menu.getSlot(CONTAINER_SIZE + k).getItem(), ts + k); } } else if (slot != null) { - itemStack2 = ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getSlot(slot.index).getItem(); - this.minecraft.gameMode.handleCreativeModeItemAdd(itemStack2, slot.index - ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).slots.size() + 9 + ts); + itemStack2 = this.menu.getSlot(slot.index).getItem(); + this.minecraft.gameMode.handleCreativeModeItemAdd(itemStack2, slot.index - this.menu.slots.size() + 9 + ts); j = ff + mouseButton; if (type == ClickType.SWAP) { - this.minecraft.gameMode.handleCreativeModeItemAdd(itemStack, j - ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).slots.size() + 9 + ts); + this.minecraft.gameMode.handleCreativeModeItemAdd(itemStack, j - this.menu.slots.size() + 9 + ts); } else if (type == ClickType.THROW && !itemStack.isEmpty()) { ItemStack itemStack4 = itemStack.copyWithCount(mouseButton == 0 ? 1 : itemStack.getMaxStackSize()); this.minecraft.player.drop(itemStack4, true); @@ -152,6 +154,64 @@ protected void slotClicked(@Nullable Slot slot, int slotId, int mouseButton, Cli } } + private boolean scrolling; + private float scrollOffs; + + private boolean canScroll() { + return this.menu.canScroll(); + } + + protected boolean insideScrollbar(double mouseX, double mouseY) { + int i = this.leftPos; + int j = this.topPos; + int k = i + 155; + int l = j + 17; + int m = k + 14; + int n = l + 160 + 2; + return mouseX >= (double)k && mouseY >= (double)l && mouseX < (double)m && mouseY < (double)n; + } + public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, double scrollY) { + if (!this.canScroll()) { + return false; + } else { + this.scrollOffs = this.menu.subtractInputFromScroll(this.scrollOffs, scrollY); + ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).scrollTo(this.scrollOffs); + return true; + } + } + public boolean mouseDragged(double mouseX, double mouseY, int button, double dragX, double dragY) { + if (this.scrolling) { + int i = this.topPos + 16; + int j = i + 160 + 2; + this.scrollOffs = ((float)mouseY - (float)i - 7.5F) / ((float)(j - i) - 15.0F); + this.scrollOffs = Mth.clamp(this.scrollOffs, 0.0F, 1.0F); + ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).scrollTo(this.scrollOffs); + return true; + } else { + return super.mouseDragged(mouseX, mouseY, button, dragX, dragY); + } + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + if (button == 0) { + if ( this.insideScrollbar(mouseX, mouseY)) { + this.scrolling = this.canScroll(); + return true; + } + } + + return super.mouseClicked(mouseX, mouseY, button); + } + + @Override + public boolean mouseReleased(double mouseX, double mouseY, int button) { + if (button == 0) { + this.scrolling = false; + } + + return super.mouseReleased(mouseX, mouseY, button); + } @Override protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) { guiGraphics.drawString(this.font, "Item Selection", this.titleLabelX, this.titleLabelY, 4210752, false); @@ -159,7 +219,18 @@ protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) { @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - guiGraphics.blit(TextureLocation.ALL_ITEMS, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight); + + int left = this.leftPos; + int top = this.topPos; + + guiGraphics.blit(TextureLocation.ALL_ITEMS, left, top, 0, 0, this.imageWidth, this.imageHeight); + + int scrollLeft = left + 154; + int l = scrollLeft + 17; + int n = l + 160 + 2; + int scrollTop = top + 17 + (int)((float)(n - l - 17) * this.scrollOffs); + + guiGraphics.blit(TextureLocation.ALL_ITEMS, scrollLeft, scrollTop, 0, 208, 16, 16); } @Environment(EnvType.CLIENT) private static class CustomCreativeSlot extends Slot { @@ -184,46 +255,14 @@ public static class ClassicItemPickerMenu extends CreativeModeInventoryScreen.It Minecraft minecraft; public float currentScroll = 0.0f; - public Collection GetItems() { - var items = new ArrayList(); - - items.add(new ItemStack(Items.COBBLESTONE)); - items.add(new ItemStack(Items.STONE)); - items.add(new ItemStack(Items.DIAMOND_ORE)); - items.add(new ItemStack(Items.GOLD_ORE)); - items.add(new ItemStack(Items.IRON_ORE)); - items.add(new ItemStack(Items.COAL_ORE)); - items.add(new ItemStack(Items.LAPIS_ORE)); - items.add(new ItemStack(Items.REDSTONE_ORE)); - items.add(new ItemStack(Items.STONE_BRICKS)); - items.add(new ItemStack(Items.MOSSY_STONE_BRICKS)); - items.add(new ItemStack(Items.CRACKED_STONE_BRICKS)); - items.add(new ItemStack(Items.CHISELED_STONE_BRICKS)); - items.add(new ItemStack(Items.CLAY)); - items.add(new ItemStack(Items.DIAMOND_BLOCK)); - items.add(new ItemStack(Items.GOLD_BLOCK)); - items.add(new ItemStack(Items.IRON_BLOCK)); - items.add(new ItemStack(Items.LAPIS_BLOCK)); - items.add(new ItemStack(Items.BRICKS)); - items.add(new ItemStack(Items.MOSSY_COBBLESTONE)); - items.add(new ItemStack(Items.SMOOTH_STONE_SLAB)); - items.add(new ItemStack(Items.SANDSTONE_SLAB)); - items.add(new ItemStack(Items.OAK_SLAB)); - items.add(new ItemStack(Items.COBBLESTONE_SLAB)); - items.add(new ItemStack(Items.STONE_BRICK_SLAB)); - - if (this.minecraft != null) { - ClientPacketListener clientPacketListener = this.minecraft.getConnection(); - SessionSearchTrees sessionSearchTrees = clientPacketListener.searchTrees(); - SearchTree searchTree; - searchTree = sessionSearchTrees.creativeTagSearch(); - String string = ""; - items.addAll(searchTree.search(string.toLowerCase(Locale.ROOT))); - } + protected int calculateItemRowCount() { + return Mth.positiveCeilDiv(this.items.size(), NUM_COLS) - NUM_ROWS; + } - System.out.println("hi"); - return items; + protected float subtractInputFromScroll(float scrollOffs, double input) { + return Mth.clamp(scrollOffs - (float)(input / (double)this.calculateItemRowCount()), 0.0F, 1.0F); } + public ClassicItemPickerMenu(Player player) { super(player); this.localPlayer = player; @@ -246,12 +285,11 @@ public ClassicItemPickerMenu(Player player) { } public void refreshItems() { this.items.clear(); - this.items.addAll(GetItems()); + this.items.addAll(ClassicCreativeModeItemHelper.GetItems()); } @Override public void scrollTo(float pos) { - System.out.println("hi2"); int i = this.getRowIndexForScroll(pos); this.currentScroll = pos; for(int j = 0; j < NUM_ROWS; ++j) { diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeItemHelper.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeItemHelper.java new file mode 100644 index 000000000..b98cbb1f5 --- /dev/null +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeItemHelper.java @@ -0,0 +1,317 @@ +package mod.adrenix.nostalgic.helper.candy.screen.inventory; + +import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.*; + +import java.util.ArrayList; +import java.util.Collection; + +public class ClassicCreativeModeItemHelper { + + + public static Collection GetItems() { + return GetItemsFromVersion(ShowAsVersion); + } + + // ABCDEFG + // A = Release State: 0 (Pre-Classic), 1 (Classic/Indev), 2 (Alpha), 3 (Beta), 4 (Release). 4 by default (Release 1.2.5) + // BCDEFG = Version: 010205 by default (Release 1.2.5) + public static int ShowAsVersion = 3010205; + + public static Collection GetItemsFromVersion(int ver) { + var items = new ArrayList(); + + // This looks really horrific but the old minecraft versions manually did the order of blocks in the inventory + + //BLOCKS + if (ver >= 0000001) items.add(Items.COBBLESTONE); // Pre-classic build 2 + if (ver >= 0000000) items.add(Items.STONE); // Pre-classic build 1 + if (ver >= 1003100) items.add(Items.DIAMOND_ORE); // Indev 0.31 + if (ver >= 1000014) items.add(Items.GOLD_ORE); // c0.0.14a + if (ver >= 1000014) items.add(Items.IRON_ORE); // c0.0.14a + if (ver >= 1000014) items.add(Items.COAL_ORE); // c0.0.14a + if (ver >= 3010200) items.add(Items.LAPIS_ORE); // b1.2 + if (ver >= 2010001) items.add(Items.REDSTONE_ORE); // a1.0.1 + if (ver >= 3010800) items.add(Items.STONE_BRICKS); + if (ver >= 3010800) items.add(Items.MOSSY_STONE_BRICKS); + if (ver >= 3010800) items.add(Items.CRACKED_STONE_BRICKS); + if (ver >= 4010200) items.add(Items.CHISELED_STONE_BRICKS); + if (ver >= 2010011) items.add(Items.CLAY); + if (ver >= 1003100) items.add(Items.DIAMOND_BLOCK); + if (ver >= 1000020) items.add(Items.GOLD_BLOCK); + if (ver >= 1000020) items.add(Items.IRON_BLOCK); + if (ver >= 1000012) items.add(Items.BEDROCK); + if (ver >= 3010200) items.add(Items.LAPIS_BLOCK); + if (ver >= 10260) items.add(Items.BRICKS); + if (ver >= 10260) items.add(Items.MOSSY_COBBLESTONE); + if (ver >= 10260) items.add(Items.SMOOTH_STONE_SLAB); + if (ver >= 31300) items.add(Items.SANDSTONE_SLAB); + if (ver >= 31300) items.add(Items.OAK_SLAB); + if (ver >= 31300) items.add(Items.COBBLESTONE_SLAB); + if (ver >= 31800) items.add(Items.BRICK_SLAB); + if (ver >= 31800) items.add(Items.STONE_BRICK_SLAB); + if (ver >= 10280) items.add(Items.OBSIDIAN); + if (ver >= 21200) items.add(Items.NETHERRACK); + if (ver >= 21200) items.add(Items.SOUL_SAND); + if (ver >= 21200) items.add(Items.GLOWSTONE); + if (ver >= 1000014) items.add(Items.OAK_LOG); + if (ver >= 31200) items.add(Items.SPRUCE_LOG); + if (ver >= 31200) items.add(Items.BIRCH_LOG); + if (ver >= 41200) items.add(Items.JUNGLE_LOG); + if (ver >= 1000014) items.add(Items.OAK_LEAVES); + if (ver >= 31200) items.add(Items.SPRUCE_LEAVES); + if (ver >= 31200) items.add(Items.BIRCH_LEAVES); + if (ver >= 41200) items.add(Items.JUNGLE_LEAVES); + if (ver >= 0000001) items.add(Items.DIRT); + if (ver >= 0000000) items.add(Items.GRASS_BLOCK); + if (ver >= 1000014) items.add(Items.SAND); + if (ver >= 31200) items.add(Items.SANDSTONE); + if (ver >= 41240) items.add(Items.CHISELED_SANDSTONE); + if (ver >= 41240) items.add(Items.CUT_SANDSTONE); + if (ver >= 10012) items.add(Items.GRAVEL); + if (ver >= 31500) items.add(Items.COBWEB); + if (ver >= 00001) items.add(Items.OAK_PLANKS); + if (ver >= 41240) items.add(Items.SPRUCE_PLANKS); + if (ver >= 41240) items.add(Items.BIRCH_PLANKS); + if (ver >= 41240) items.add(Items.JUNGLE_PLANKS); + if (ver >= 00002) items.add(Items.OAK_SAPLING); + if (ver >= 31500) items.add(Items.SPRUCE_SAPLING); + if (ver >= 31500) items.add(Items.BIRCH_SAPLING); + if (ver >= 41200) items.add(Items.JUNGLE_SAPLING); + if (ver >= 31600) items.add(Items.DEAD_BUSH); + if (ver >= 10019) items.add(Items.SPONGE); + if (ver >= 21040) items.add(Items.ICE); + if (ver >= 21050) items.add(Items.SNOW_BLOCK); + if (ver >= 10020) items.add(Items.DANDELION); + if (ver >= 10020) items.add(Items.POPPY); + if (ver >= 10020) items.add(Items.BROWN_MUSHROOM); + if (ver >= 10020) items.add(Items.RED_MUSHROOM); + if (ver >= 21060) items.add(Items.CACTUS); + if (ver >= 31800) items.add(Items.MELON); + if (ver >= 21200) items.add(Items.CARVED_PUMPKIN); + if (ver >= 21200) items.add(Items.JACK_O_LANTERN); + if (ver >= 31800) items.add(Items.VINE); + if (ver >= 31800) items.add(Items.IRON_BARS); + if (ver >= 31800) items.add(Items.GLASS_PANE); + if (ver >= 31900) items.add(Items.NETHER_BRICKS); + if (ver >= 31900) items.add(Items.NETHER_BRICK_FENCE); + if (ver >= 31900) items.add(Items.NETHER_BRICK_STAIRS); + if (ver >= 31940) items.add(Items.END_STONE); + if (ver >= 31900) items.add(Items.MYCELIUM); + if (ver >= 31900) items.add(Items.LILY_PAD); + if (ver >= 31600) items.add(Items.SHORT_GRASS); + if (ver >= 31600) items.add(Items.FERN); + if (ver >= 10310) items.add(Items.CHEST); + if (ver >= 10310) items.add(Items.CRAFTING_TABLE); + if (ver >= 10019) items.add(Items.GLASS); + if (ver >= 10260) items.add(Items.TNT); + if (ver >= 10260) items.add(Items.BOOKSHELF); + if (ver >= 10200) items.add(Items.WHITE_WOOL); + if (ver >= 31200) items.add(Items.ORANGE_WOOL); + if (ver >= 31200) items.add(Items.MAGENTA_WOOL); + if (ver >= 31200) items.add(Items.LIGHT_BLUE_WOOL); + if (ver >= 31200) items.add(Items.YELLOW_WOOL); + if (ver >= 31200) items.add(Items.LIME_WOOL); + if (ver >= 31200) items.add(Items.PINK_WOOL); + if (ver >= 31200) items.add(Items.GRAY_WOOL); + if (ver >= 31200) items.add(Items.LIGHT_GRAY_WOOL); + if (ver >= 31200) items.add(Items.CYAN_WOOL); + if (ver >= 31200) items.add(Items.PURPLE_WOOL); + if (ver >= 31200) items.add(Items.BLUE_WOOL); + if (ver >= 31200) items.add(Items.BROWN_WOOL); + if (ver >= 31200) items.add(Items.GREEN_WOOL); + if (ver >= 31200) items.add(Items.RED_WOOL); + if (ver >= 31200) items.add(Items.BLACK_WOOL); + if (ver >= 31200) items.add(Items.DISPENSER); + if (ver >= 11219) items.add(Items.FURNACE); + if (ver >= 31200) items.add(Items.NOTE_BLOCK); + if (ver >= 21014) items.add(Items.JUKEBOX); + items.add(Items.STICKY_PISTON); + items.add(Items.PISTON); + items.add(Items.OAK_FENCE); + items.add(Items.OAK_FENCE_GATE); + if (ver >= 11607) items.add(Items.LADDER); + if (ver >= 11618) items.add(Items.RAIL); + items.add(Items.POWERED_RAIL); + items.add(Items.DETECTOR_RAIL); + items.add(Items.TORCH); + if (ver >= 11629) items.add(Items.OAK_STAIRS); + if (ver >= 11629) items.add(Items.COBBLESTONE_STAIRS); + items.add(Items.BRICK_STAIRS); + items.add(Items.STONE_BRICK_STAIRS); + if (ver >= 21010) items.add(Items.LEVER); + if (ver >= 21010) items.add(Items.STONE_PRESSURE_PLATE); + if (ver >= 21010) items.add(Items.OAK_PRESSURE_PLATE); + if (ver >= 21010) items.add(Items.REDSTONE_TORCH); + if (ver >= 21010) items.add(Items.STONE_BUTTON); + items.add(Items.OAK_TRAPDOOR); + items.add(Items.ENCHANTING_TABLE); + items.add(Items.REDSTONE_LAMP); + + // ITEMS + items.add(Items.IRON_SHOVEL); + items.add(Items.IRON_PICKAXE); + items.add(Items.IRON_AXE); + items.add(Items.FLINT_AND_STEEL); + items.add(Items.APPLE); + items.add(Items.BOW); + items.add(Items.ARROW); + items.add(Items.COAL); + items.add(Items.DIAMOND); + items.add(Items.IRON_INGOT); + items.add(Items.GOLD_INGOT); + items.add(Items.IRON_SWORD); + items.add(Items.WOODEN_SWORD); + items.add(Items.WOODEN_SHOVEL); + items.add(Items.WOODEN_PICKAXE); + items.add(Items.WOODEN_AXE); + items.add(Items.STONE_SWORD); + items.add(Items.STONE_SHOVEL); + items.add(Items.STONE_PICKAXE); + items.add(Items.STONE_AXE); + items.add(Items.DIAMOND_SWORD); + items.add(Items.DIAMOND_SHOVEL); + items.add(Items.DIAMOND_PICKAXE); + items.add(Items.DIAMOND_AXE); + items.add(Items.STICK); + items.add(Items.BOWL); + items.add(Items.MUSHROOM_STEW); + items.add(Items.GOLDEN_SWORD); + items.add(Items.GOLDEN_SHOVEL); + items.add(Items.GOLDEN_PICKAXE); + items.add(Items.GOLDEN_AXE); + items.add(Items.STRING); + items.add(Items.FEATHER); + items.add(Items.GUNPOWDER); + items.add(Items.WOODEN_HOE); + items.add(Items.STONE_HOE); + items.add(Items.IRON_HOE); + items.add(Items.DIAMOND_HOE); + items.add(Items.GOLDEN_HOE); + items.add(Items.WHEAT_SEEDS); + items.add(Items.WHEAT); + items.add(Items.BREAD); + items.add(Items.LEATHER_HELMET); + items.add(Items.LEATHER_CHESTPLATE); + items.add(Items.LEATHER_LEGGINGS); + items.add(Items.LEATHER_BOOTS); + items.add(Items.CHAINMAIL_HELMET); + items.add(Items.CHAINMAIL_CHESTPLATE); + items.add(Items.CHAINMAIL_LEGGINGS); + items.add(Items.CHAINMAIL_BOOTS); + items.add(Items.IRON_HELMET); + items.add(Items.IRON_CHESTPLATE); + items.add(Items.IRON_LEGGINGS); + items.add(Items.IRON_BOOTS); + items.add(Items.DIAMOND_HELMET); + items.add(Items.DIAMOND_CHESTPLATE); + items.add(Items.DIAMOND_LEGGINGS); + items.add(Items.DIAMOND_BOOTS); + items.add(Items.GOLDEN_HELMET); + items.add(Items.GOLDEN_CHESTPLATE); + items.add(Items.GOLDEN_LEGGINGS); + items.add(Items.GOLDEN_BOOTS); + items.add(Items.FLINT); + items.add(Items.PORKCHOP); + items.add(Items.COOKED_PORKCHOP); + items.add(Items.PAINTING); + items.add(Items.ENCHANTED_GOLDEN_APPLE); + if (ver >= 11607) items.add(Items.OAK_SIGN); + if (ver >= 11607) items.add(Items.OAK_DOOR); + items.add(Items.BUCKET); + items.add(Items.WATER_BUCKET); + items.add(Items.LAVA_BUCKET); + items.add(Items.MINECART); + items.add(Items.SADDLE); + items.add(Items.IRON_DOOR); + items.add(Items.REDSTONE); + items.add(Items.SNOWBALL); + items.add(Items.OAK_BOAT); + items.add(Items.LEATHER); + items.add(Items.MILK_BUCKET); + items.add(Items.BRICK); + items.add(Items.CLAY_BALL); + items.add(Items.SUGAR_CANE); + items.add(Items.PAPER); + items.add(Items.BOOK); + items.add(Items.SLIME_BALL); + items.add(Items.CHEST_MINECART); + items.add(Items.FURNACE_MINECART); + items.add(Items.EGG); + items.add(Items.COMPASS); + items.add(Items.FISHING_ROD); + items.add(Items.CLOCK); + items.add(Items.GLOWSTONE_DUST); + items.add(Items.COD); + items.add(Items.COOKED_COD); + items.add(Items.INK_SAC); + items.add(Items.BONE); + items.add(Items.SUGAR); + items.add(Items.CAKE); + items.add(Items.RED_BED); + items.add(Items.REPEATER); + items.add(Items.COOKIE); + items.add(Items.MAP); + items.add(Items.SHEARS); + items.add(Items.MELON_SLICE); + items.add(Items.PUMPKIN_SEEDS); + items.add(Items.MELON_SEEDS); + items.add(Items.BEEF); + items.add(Items.COOKED_BEEF); + items.add(Items.CHICKEN); + items.add(Items.COOKED_CHICKEN); + items.add(Items.ROTTEN_FLESH); + items.add(Items.ENDER_PEARL); + items.add(Items.BLAZE_ROD); + items.add(Items.GHAST_TEAR); + items.add(Items.GOLD_NUGGET); + items.add(Items.NETHER_WART); + items.add(Items.GLASS_BOTTLE); + items.add(Items.SPIDER_EYE); + items.add(Items.FERMENTED_SPIDER_EYE); + items.add(Items.BLAZE_POWDER); + items.add(Items.MAGMA_CREAM); + items.add(Items.BREWING_STAND); + items.add(Items.CAULDRON); + items.add(Items.ENDER_EYE); + items.add(Items.GLISTERING_MELON_SLICE); + items.add(Items.EXPERIENCE_BOTTLE); + items.add(Items.FIRE_CHARGE); + + //DISCS + for ( ItemStack itemstack : CreativeModeTabs.searchTab().getDisplayItems()) { + Item item = itemstack.getItem(); + if (!items.contains(item) && itemstack.is(ItemTags.CREEPER_DROP_MUSIC_DISCS)) + items.add(item); + } + + //DYE + for ( ItemStack itemstack : CreativeModeTabs.searchTab().getDisplayItems()) { + Item item = itemstack.getItem(); + if (!items.contains(item) && (item instanceof DyeItem)) + items.add(item); + } + + //MISC + items.add(Items.BONE_MEAL); + + //EGGS + for ( SpawnEggItem egg : SpawnEggItem.eggs()) { + items.add(egg); + } + + for ( ItemStack itemstack : CreativeModeTabs.searchTab().getDisplayItems()) { + Item item = itemstack.getItem(); + if (!items.contains(item) && !(item instanceof SpawnEggItem) && !(item instanceof PotionItem)) + items.add(item); + } + + var itemstacks = new ArrayList(); + + for (Item item : items) { + itemstacks.add(new ItemStack(item)); + } + + return itemstacks; + } +} From f724402f0c162e475d4eef0458c0cccd3b9f1138 Mon Sep 17 00:00:00 2001 From: Xenthio Date: Wed, 25 Sep 2024 20:52:24 +1000 Subject: [PATCH 5/9] Touchups --- .../nostalgic/config/ClientConfig.java | 4 + .../ClassicCreativeModeInventoryScreen.java | 12 +- .../ClassicCreativeModeItemHelper.java | 660 +++++++++++------- .../CreativeModeInventoryScreenMixin.java | 13 +- .../nostalgic/tweak/config/CandyTweak.java | 9 +- .../tweak/container/group/CandyGroup.java | 1 + .../assets/nostalgic_tweaks/lang/en_us.json | 8 + 7 files changed, 434 insertions(+), 273 deletions(-) diff --git a/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java b/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java index ca6a21b0b..2aea46683 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java +++ b/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java @@ -337,8 +337,12 @@ public static class EyeCandy public boolean disableEmptyArmorTexture = CandyTweak.DISABLE_EMPTY_ARMOR_TEXTURE.register("disableEmptyArmorTexture"); public boolean disableEmptyShieldTexture = CandyTweak.DISABLE_EMPTY_SHIELD_TEXTURE.register("disableEmptyShieldTexture"); public boolean invertedPlayerLighting = CandyTweak.INVERTED_PLAYER_LIGHTING.register("invertedPlayerLighting"); + + // Creative Inventory Screen public Hotbar oldCreativeHotbar = CandyTweak.OLD_CREATIVE_HOTBAR.register("oldCreativeHotbar"); public boolean oldCreativeInventory = CandyTweak.OLD_CREATIVE_INVENTORY.register("oldCreativeInventory"); + public String oldCreativeInventoryVersion = CandyTweak.OLD_CREATIVE_INVENTORY_VERSION.register("oldCreativeInventoryVersion"); + public boolean oldCreativeInventoryAlwaysShowModernItems = CandyTweak.OLD_CREATIVE_INVENTORY_ALWAYS_SHOW_MODERN_ITEMS.register("oldCreativeInventoryAlwaysShowModernItems"); // Generic Screen diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java index d5e5cb767..4b6057dca 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java @@ -175,7 +175,7 @@ public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, doubl return false; } else { this.scrollOffs = this.menu.subtractInputFromScroll(this.scrollOffs, scrollY); - ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).scrollTo(this.scrollOffs); + this.menu.scrollTo(this.scrollOffs); return true; } } @@ -185,7 +185,7 @@ public boolean mouseDragged(double mouseX, double mouseY, int button, double dra int j = i + 160 + 2; this.scrollOffs = ((float)mouseY - (float)i - 7.5F) / ((float)(j - i) - 15.0F); this.scrollOffs = Mth.clamp(this.scrollOffs, 0.0F, 1.0F); - ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).scrollTo(this.scrollOffs); + this.menu.scrollTo(this.scrollOffs); return true; } else { return super.mouseDragged(mouseX, mouseY, button, dragX, dragY); @@ -232,6 +232,14 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, guiGraphics.blit(TextureLocation.ALL_ITEMS, scrollLeft, scrollTop, 0, 208, 16, 16); } + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { + super.render(guiGraphics, mouseX, mouseY, partialTick); + + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + @Environment(EnvType.CLIENT) private static class CustomCreativeSlot extends Slot { public CustomCreativeSlot(Container container, int slot, int x, int y) { diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeItemHelper.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeItemHelper.java index b98cbb1f5..ad8831f87 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeItemHelper.java +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeItemHelper.java @@ -1,5 +1,7 @@ package mod.adrenix.nostalgic.helper.candy.screen.inventory; +import mod.adrenix.nostalgic.tweak.config.CandyTweak; +import net.fabricmc.loader.impl.util.log.Log; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.*; @@ -10,300 +12,422 @@ public class ClassicCreativeModeItemHelper { public static Collection GetItems() { - return GetItemsFromVersion(ShowAsVersion); + var ver = VersionInt(CandyTweak.OLD_CREATIVE_INVENTORY_VERSION.get()); + return GetItemsFromVersion(ver); } // ABCDEFG // A = Release State: 0 (Pre-Classic), 1 (Classic/Indev), 2 (Alpha), 3 (Beta), 4 (Release). 4 by default (Release 1.2.5) - // BCDEFG = Version: 010205 by default (Release 1.2.5) - public static int ShowAsVersion = 3010205; + // BC DE FG = Version: 01 02 05 by default (Release 1.2.5) + public static int ShowAsVersion = 4010205; + + // Cursed, I'm so sorry. + public static int VersionInt(String string) { + int b = 0; + int state = 1000000; + int major = 10000; + int minor = 100; + int patch = 1; + + if (string.startsWith("p")) {b += state * 0;} // starts with p, we're pre classic. + else if (string.startsWith("c")) {b += state * 1;} // starts with c, we're classic. + else if (string.startsWith("i")) {b += state * 1;} // starts with i, we're indev. + else if (string.startsWith("a")) {b += state * 2;} // starts with a, we're alpha. + else if (string.startsWith("b")) {b += state * 3;} // starts with b, we're beta. + else if (string.startsWith("r")) {b += state * 4;} // starts with r, we're release. + else {string = "r"+string; b += state * 4;} // Assume release + + String[] splits = string.substring(1).split("[.]"); + + if (splits.length >= 1) b += Integer.valueOf(splits[0]) * major; + if (splits.length >= 2) b += Integer.valueOf(splits[1]) * minor; + if (splits.length >= 3) b += Integer.valueOf(splits[2]) * patch; + + return b; + + } public static Collection GetItemsFromVersion(int ver) { var items = new ArrayList(); // This looks really horrific but the old minecraft versions manually did the order of blocks in the inventory //BLOCKS - if (ver >= 0000001) items.add(Items.COBBLESTONE); // Pre-classic build 2 - if (ver >= 0000000) items.add(Items.STONE); // Pre-classic build 1 - if (ver >= 1003100) items.add(Items.DIAMOND_ORE); // Indev 0.31 - if (ver >= 1000014) items.add(Items.GOLD_ORE); // c0.0.14a - if (ver >= 1000014) items.add(Items.IRON_ORE); // c0.0.14a - if (ver >= 1000014) items.add(Items.COAL_ORE); // c0.0.14a - if (ver >= 3010200) items.add(Items.LAPIS_ORE); // b1.2 - if (ver >= 2010001) items.add(Items.REDSTONE_ORE); // a1.0.1 - if (ver >= 3010800) items.add(Items.STONE_BRICKS); - if (ver >= 3010800) items.add(Items.MOSSY_STONE_BRICKS); - if (ver >= 3010800) items.add(Items.CRACKED_STONE_BRICKS); - if (ver >= 4010200) items.add(Items.CHISELED_STONE_BRICKS); - if (ver >= 2010011) items.add(Items.CLAY); - if (ver >= 1003100) items.add(Items.DIAMOND_BLOCK); - if (ver >= 1000020) items.add(Items.GOLD_BLOCK); - if (ver >= 1000020) items.add(Items.IRON_BLOCK); - if (ver >= 1000012) items.add(Items.BEDROCK); - if (ver >= 3010200) items.add(Items.LAPIS_BLOCK); - if (ver >= 10260) items.add(Items.BRICKS); - if (ver >= 10260) items.add(Items.MOSSY_COBBLESTONE); - if (ver >= 10260) items.add(Items.SMOOTH_STONE_SLAB); - if (ver >= 31300) items.add(Items.SANDSTONE_SLAB); - if (ver >= 31300) items.add(Items.OAK_SLAB); - if (ver >= 31300) items.add(Items.COBBLESTONE_SLAB); - if (ver >= 31800) items.add(Items.BRICK_SLAB); - if (ver >= 31800) items.add(Items.STONE_BRICK_SLAB); - if (ver >= 10280) items.add(Items.OBSIDIAN); - if (ver >= 21200) items.add(Items.NETHERRACK); - if (ver >= 21200) items.add(Items.SOUL_SAND); - if (ver >= 21200) items.add(Items.GLOWSTONE); - if (ver >= 1000014) items.add(Items.OAK_LOG); - if (ver >= 31200) items.add(Items.SPRUCE_LOG); - if (ver >= 31200) items.add(Items.BIRCH_LOG); - if (ver >= 41200) items.add(Items.JUNGLE_LOG); - if (ver >= 1000014) items.add(Items.OAK_LEAVES); - if (ver >= 31200) items.add(Items.SPRUCE_LEAVES); - if (ver >= 31200) items.add(Items.BIRCH_LEAVES); - if (ver >= 41200) items.add(Items.JUNGLE_LEAVES); - if (ver >= 0000001) items.add(Items.DIRT); - if (ver >= 0000000) items.add(Items.GRASS_BLOCK); - if (ver >= 1000014) items.add(Items.SAND); - if (ver >= 31200) items.add(Items.SANDSTONE); - if (ver >= 41240) items.add(Items.CHISELED_SANDSTONE); - if (ver >= 41240) items.add(Items.CUT_SANDSTONE); - if (ver >= 10012) items.add(Items.GRAVEL); - if (ver >= 31500) items.add(Items.COBWEB); - if (ver >= 00001) items.add(Items.OAK_PLANKS); - if (ver >= 41240) items.add(Items.SPRUCE_PLANKS); - if (ver >= 41240) items.add(Items.BIRCH_PLANKS); - if (ver >= 41240) items.add(Items.JUNGLE_PLANKS); - if (ver >= 00002) items.add(Items.OAK_SAPLING); - if (ver >= 31500) items.add(Items.SPRUCE_SAPLING); - if (ver >= 31500) items.add(Items.BIRCH_SAPLING); - if (ver >= 41200) items.add(Items.JUNGLE_SAPLING); - if (ver >= 31600) items.add(Items.DEAD_BUSH); - if (ver >= 10019) items.add(Items.SPONGE); - if (ver >= 21040) items.add(Items.ICE); - if (ver >= 21050) items.add(Items.SNOW_BLOCK); - if (ver >= 10020) items.add(Items.DANDELION); - if (ver >= 10020) items.add(Items.POPPY); - if (ver >= 10020) items.add(Items.BROWN_MUSHROOM); - if (ver >= 10020) items.add(Items.RED_MUSHROOM); - if (ver >= 21060) items.add(Items.CACTUS); - if (ver >= 31800) items.add(Items.MELON); - if (ver >= 21200) items.add(Items.CARVED_PUMPKIN); - if (ver >= 21200) items.add(Items.JACK_O_LANTERN); - if (ver >= 31800) items.add(Items.VINE); - if (ver >= 31800) items.add(Items.IRON_BARS); - if (ver >= 31800) items.add(Items.GLASS_PANE); - if (ver >= 31900) items.add(Items.NETHER_BRICKS); - if (ver >= 31900) items.add(Items.NETHER_BRICK_FENCE); - if (ver >= 31900) items.add(Items.NETHER_BRICK_STAIRS); - if (ver >= 31940) items.add(Items.END_STONE); - if (ver >= 31900) items.add(Items.MYCELIUM); - if (ver >= 31900) items.add(Items.LILY_PAD); - if (ver >= 31600) items.add(Items.SHORT_GRASS); - if (ver >= 31600) items.add(Items.FERN); - if (ver >= 10310) items.add(Items.CHEST); - if (ver >= 10310) items.add(Items.CRAFTING_TABLE); - if (ver >= 10019) items.add(Items.GLASS); - if (ver >= 10260) items.add(Items.TNT); - if (ver >= 10260) items.add(Items.BOOKSHELF); - if (ver >= 10200) items.add(Items.WHITE_WOOL); - if (ver >= 31200) items.add(Items.ORANGE_WOOL); - if (ver >= 31200) items.add(Items.MAGENTA_WOOL); - if (ver >= 31200) items.add(Items.LIGHT_BLUE_WOOL); - if (ver >= 31200) items.add(Items.YELLOW_WOOL); - if (ver >= 31200) items.add(Items.LIME_WOOL); - if (ver >= 31200) items.add(Items.PINK_WOOL); - if (ver >= 31200) items.add(Items.GRAY_WOOL); - if (ver >= 31200) items.add(Items.LIGHT_GRAY_WOOL); - if (ver >= 31200) items.add(Items.CYAN_WOOL); - if (ver >= 31200) items.add(Items.PURPLE_WOOL); - if (ver >= 31200) items.add(Items.BLUE_WOOL); - if (ver >= 31200) items.add(Items.BROWN_WOOL); - if (ver >= 31200) items.add(Items.GREEN_WOOL); - if (ver >= 31200) items.add(Items.RED_WOOL); - if (ver >= 31200) items.add(Items.BLACK_WOOL); - if (ver >= 31200) items.add(Items.DISPENSER); - if (ver >= 11219) items.add(Items.FURNACE); - if (ver >= 31200) items.add(Items.NOTE_BLOCK); - if (ver >= 21014) items.add(Items.JUKEBOX); - items.add(Items.STICKY_PISTON); - items.add(Items.PISTON); - items.add(Items.OAK_FENCE); - items.add(Items.OAK_FENCE_GATE); - if (ver >= 11607) items.add(Items.LADDER); - if (ver >= 11618) items.add(Items.RAIL); - items.add(Items.POWERED_RAIL); - items.add(Items.DETECTOR_RAIL); - items.add(Items.TORCH); - if (ver >= 11629) items.add(Items.OAK_STAIRS); - if (ver >= 11629) items.add(Items.COBBLESTONE_STAIRS); - items.add(Items.BRICK_STAIRS); - items.add(Items.STONE_BRICK_STAIRS); - if (ver >= 21010) items.add(Items.LEVER); - if (ver >= 21010) items.add(Items.STONE_PRESSURE_PLATE); - if (ver >= 21010) items.add(Items.OAK_PRESSURE_PLATE); - if (ver >= 21010) items.add(Items.REDSTONE_TORCH); - if (ver >= 21010) items.add(Items.STONE_BUTTON); - items.add(Items.OAK_TRAPDOOR); - items.add(Items.ENCHANTING_TABLE); - items.add(Items.REDSTONE_LAMP); + if (ver >= VersionInt("p0.0.1")) items.add(Items.COBBLESTONE); // Pre-classic build 2 + if (ver >= VersionInt("p0.0.0")) items.add(Items.STONE); // Pre-classic build 1 + if (ver >= VersionInt("i0.31")) items.add(Items.DIAMOND_ORE); // Indev 0.31 + if (ver >= VersionInt("c0.0.14")) items.add(Items.GOLD_ORE); // c0.0.14a + if (ver >= VersionInt("c0.0.14")) items.add(Items.IRON_ORE); // c0.0.14a + if (ver >= VersionInt("c0.0.14")) items.add(Items.COAL_ORE); // c0.0.14a + if (ver >= VersionInt("1.3.1")) items.add(Items.EMERALD_ORE); + if (ver >= VersionInt("b1.2")) items.add(Items.LAPIS_ORE); // b1.2 + if (ver >= VersionInt("a1.0.1")) items.add(Items.REDSTONE_ORE); // a1.0.1 + if (ver >= VersionInt("b1.8")) items.add(Items.STONE_BRICKS); // b1.8 + if (ver >= VersionInt("b1.8")) items.add(Items.MOSSY_STONE_BRICKS); // b1.8 + if (ver >= VersionInt("b1.8")) items.add(Items.CRACKED_STONE_BRICKS); + if (ver >= VersionInt("1.2")) items.add(Items.CHISELED_STONE_BRICKS); + if (ver >= VersionInt("a1.0.11")) items.add(Items.CLAY); + if (ver >= VersionInt("i0.31.05")) items.add(Items.DIAMOND_BLOCK); + if (ver >= VersionInt("c0.0.20")) items.add(Items.GOLD_BLOCK); + if (ver >= VersionInt("c0.0.20")) items.add(Items.IRON_BLOCK); + if (ver >= VersionInt("1.6.1")) items.add(Items.COAL_BLOCK); + if (ver >= VersionInt("1.3.1")) items.add(Items.EMERALD_BLOCK); + if (ver >= VersionInt("c0.0.12")) items.add(Items.BEDROCK); + if (ver >= VersionInt("b1.2")) items.add(Items.LAPIS_BLOCK); + if (ver >= VersionInt("1.5")) items.add(Items.REDSTONE_BLOCK); + if (ver >= VersionInt("c0.26")) items.add(Items.BRICKS); + if (ver >= VersionInt("c0.26")) items.add(Items.MOSSY_COBBLESTONE); + if (ver >= VersionInt("c0.26")) items.add(Items.SMOOTH_STONE_SLAB); + if (ver >= VersionInt("b1.3")) items.add(Items.SANDSTONE_SLAB); + if (ver >= VersionInt("b1.3")) items.add(Items.OAK_SLAB); + if (ver >= VersionInt("b1.3")) items.add(Items.COBBLESTONE_SLAB); + if (ver >= VersionInt("b1.8")) items.add(Items.BRICK_SLAB); + if (ver >= VersionInt("b1.8")) items.add(Items.STONE_BRICK_SLAB); + if (ver >= VersionInt("c0.28")) items.add(Items.OBSIDIAN); + if (ver >= VersionInt("a1.2.0")) items.add(Items.NETHERRACK); + if (ver >= VersionInt("a1.2.0")) items.add(Items.SOUL_SAND); + if (ver >= VersionInt("a1.2.0")) items.add(Items.GLOWSTONE); + if (ver >= VersionInt("c0.0.14")) items.add(Items.OAK_LOG); + if (ver >= VersionInt("b1.2")) items.add(Items.SPRUCE_LOG); + if (ver >= VersionInt("b1.2")) items.add(Items.BIRCH_LOG); + if (ver >= VersionInt("1.2")) items.add(Items.JUNGLE_LOG); + if (ver >= VersionInt("1.16")) items.add(Items.WARPED_STEM); + if (ver >= VersionInt("1.16")) items.add(Items.CRIMSON_STEM); + if (ver >= VersionInt("c0.0.14")) items.add(Items.OAK_LEAVES); + if (ver >= VersionInt("b1.2")) items.add(Items.SPRUCE_LEAVES); + if (ver >= VersionInt("b1.2")) items.add(Items.BIRCH_LEAVES); + if (ver >= VersionInt("1.2")) items.add(Items.JUNGLE_LEAVES); + if (ver >= VersionInt("1.7.1")) items.add(Items.DARK_OAK_LEAVES); + if (ver >= VersionInt("1.7.1")) items.add(Items.ACACIA_LEAVES); + if (ver >= VersionInt("1.16")) items.add(Items.WARPED_WART_BLOCK); + if (ver >= VersionInt("1.16")) items.add(Items.NETHER_WART_BLOCK); + if (ver >= VersionInt("p0.0.1")) items.add(Items.DIRT); + if (ver >= VersionInt("p0.0.0")) items.add(Items.GRASS_BLOCK); + if (ver >= VersionInt("c0.0.14")) items.add(Items.SAND); + if (ver >= VersionInt("b1.2")) items.add(Items.SANDSTONE); + if (ver >= VersionInt("1.2.4")) items.add(Items.CHISELED_SANDSTONE); + if (ver >= VersionInt("1.2.4")) items.add(Items.CUT_SANDSTONE); + if (ver >= VersionInt("c0.0.14")) items.add(Items.GRAVEL); + if (ver >= VersionInt("b1.5")) items.add(Items.COBWEB); + if (ver >= VersionInt("p0.0.1")) items.add(Items.OAK_PLANKS); + if (ver >= VersionInt("1.2.4")) items.add(Items.SPRUCE_PLANKS); + if (ver >= VersionInt("1.2.4")) items.add(Items.BIRCH_PLANKS); + if (ver >= VersionInt("1.2.4")) items.add(Items.JUNGLE_PLANKS); + if (ver >= VersionInt("1.7.1")) items.add(Items.DARK_OAK_PLANKS); + if (ver >= VersionInt("1.7.1")) items.add(Items.ACACIA_PLANKS); + if (ver >= VersionInt("1.16")) items.add(Items.WARPED_PLANKS); + if (ver >= VersionInt("1.16")) items.add(Items.CRIMSON_PLANKS); + if (ver >= VersionInt("p0.0.2")) items.add(Items.OAK_SAPLING); + if (ver >= VersionInt("b1.5")) items.add(Items.SPRUCE_SAPLING); + if (ver >= VersionInt("b1.5")) items.add(Items.BIRCH_SAPLING); + if (ver >= VersionInt("1.2")) items.add(Items.JUNGLE_SAPLING); + if (ver >= VersionInt("1.7.1")) items.add(Items.DARK_OAK_SAPLING); + if (ver >= VersionInt("1.7.1")) items.add(Items.ACACIA_SAPLING); + if (ver >= VersionInt("1.16")) items.add(Items.WARPED_FUNGUS); + if (ver >= VersionInt("1.16")) items.add(Items.CRIMSON_FUNGUS); + if (ver >= VersionInt("b1.6")) items.add(Items.DEAD_BUSH); + if (ver >= VersionInt("c0.0.19")) items.add(Items.SPONGE); + if (ver >= VersionInt("a1.0.4")) items.add(Items.ICE); + if (ver >= VersionInt("a1.0.5")) items.add(Items.SNOW_BLOCK); + if (ver >= VersionInt("c0.0.20")) items.add(Items.DANDELION); + if (ver >= VersionInt("c0.0.20")) items.add(Items.POPPY); + if (ver >= VersionInt("c0.0.20")) items.add(Items.BROWN_MUSHROOM); + if (ver >= VersionInt("c0.0.20")) items.add(Items.RED_MUSHROOM); + if (ver >= VersionInt("a1.0.11") && ver < VersionInt("1.0.0")) items.add(Items.SUGAR_CANE); + if (ver >= VersionInt("a1.0.6")) items.add(Items.CACTUS); + if (ver >= VersionInt("b1.8")) items.add(Items.MELON); + if (ver >= VersionInt("a1.2.0")) items.add(Items.CARVED_PUMPKIN); + if (ver >= VersionInt("a1.2.0")) items.add(Items.JACK_O_LANTERN); + if (ver >= VersionInt("b1.8")) items.add(Items.VINE); + if (ver >= VersionInt("b1.8")) items.add(Items.IRON_BARS); + if (ver >= VersionInt("b1.8")) items.add(Items.GLASS_PANE); + if (ver >= VersionInt("b1.9")) items.add(Items.NETHER_BRICKS); + if (ver >= VersionInt("b1.9")) items.add(Items.NETHER_BRICK_FENCE); + if (ver >= VersionInt("b1.9")) items.add(Items.NETHER_BRICK_STAIRS); + if (ver >= VersionInt("b1.9.4")) items.add(Items.END_STONE); + if (ver >= VersionInt("b1.9")) items.add(Items.MYCELIUM); + if (ver >= VersionInt("b1.9")) items.add(Items.LILY_PAD); + if (ver >= VersionInt("b1.6")) items.add(Items.SHORT_GRASS); + if (ver >= VersionInt("b1.6")) items.add(Items.FERN); + if (ver >= VersionInt("i0.31.04")) items.add(Items.CHEST); + if (ver >= VersionInt("i0.31.06")) items.add(Items.CRAFTING_TABLE); + if (ver >= VersionInt("c0.0.19")) items.add(Items.GLASS); + if (ver >= VersionInt("c0.26")) items.add(Items.TNT); + if (ver >= VersionInt("c0.26")) items.add(Items.BOOKSHELF); + if (ver >= VersionInt("c0.0.20")) items.add(Items.WHITE_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.ORANGE_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.MAGENTA_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.LIGHT_BLUE_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.YELLOW_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.LIME_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.PINK_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.GRAY_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.LIGHT_GRAY_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.CYAN_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.PURPLE_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.BLUE_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.BROWN_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.GREEN_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.RED_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.BLACK_WOOL); + if (ver >= VersionInt("b1.2")) items.add(Items.DISPENSER); + if (ver >= VersionInt("i0.31.08")) items.add(Items.FURNACE); + if (ver >= VersionInt("b1.2")) items.add(Items.NOTE_BLOCK); + if (ver >= VersionInt("a1.0.14")) items.add(Items.JUKEBOX); + if (ver >= VersionInt("b1.7")) items.add(Items.STICKY_PISTON); + if (ver >= VersionInt("b1.7")) items.add(Items.PISTON); + if (ver >= VersionInt("a1.0.17")) items.add(Items.OAK_FENCE); + if (ver >= VersionInt("b1.8")) items.add(Items.OAK_FENCE_GATE); + if (ver >= VersionInt("i0.31.09")) items.add(Items.LADDER); + if (ver >= VersionInt("i0.31.10")) items.add(Items.RAIL); + if (ver >= VersionInt("b1.5")) items.add(Items.POWERED_RAIL); + if (ver >= VersionInt("b1.5")) items.add(Items.DETECTOR_RAIL); + if (ver >= VersionInt("i0.31")) items.add(Items.TORCH); + if (ver >= VersionInt("i0.31.12")) items.add(Items.OAK_STAIRS); + if (ver >= VersionInt("i0.31.12")) items.add(Items.COBBLESTONE_STAIRS); + if (ver >= VersionInt("b1.8")) items.add(Items.BRICK_STAIRS); + if (ver >= VersionInt("b1.8")) items.add(Items.STONE_BRICK_STAIRS); + if (ver >= VersionInt("a1.0.1")) items.add(Items.LEVER); + if (ver >= VersionInt("a1.0.1")) items.add(Items.STONE_PRESSURE_PLATE); + if (ver >= VersionInt("a1.0.1")) items.add(Items.OAK_PRESSURE_PLATE); + if (ver >= VersionInt("a1.0.1")) items.add(Items.REDSTONE_TORCH); + if (ver >= VersionInt("a1.0.1")) items.add(Items.STONE_BUTTON); + if (ver >= VersionInt("b1.6")) items.add(Items.OAK_TRAPDOOR); + if (ver >= VersionInt("b1.9.3")) items.add(Items.ENCHANTING_TABLE); + if (ver >= VersionInt("1.2")) items.add(Items.REDSTONE_LAMP); // ITEMS - items.add(Items.IRON_SHOVEL); - items.add(Items.IRON_PICKAXE); - items.add(Items.IRON_AXE); - items.add(Items.FLINT_AND_STEEL); - items.add(Items.APPLE); - items.add(Items.BOW); - items.add(Items.ARROW); - items.add(Items.COAL); - items.add(Items.DIAMOND); - items.add(Items.IRON_INGOT); - items.add(Items.GOLD_INGOT); - items.add(Items.IRON_SWORD); - items.add(Items.WOODEN_SWORD); - items.add(Items.WOODEN_SHOVEL); - items.add(Items.WOODEN_PICKAXE); - items.add(Items.WOODEN_AXE); - items.add(Items.STONE_SWORD); - items.add(Items.STONE_SHOVEL); - items.add(Items.STONE_PICKAXE); - items.add(Items.STONE_AXE); - items.add(Items.DIAMOND_SWORD); - items.add(Items.DIAMOND_SHOVEL); - items.add(Items.DIAMOND_PICKAXE); - items.add(Items.DIAMOND_AXE); - items.add(Items.STICK); - items.add(Items.BOWL); - items.add(Items.MUSHROOM_STEW); - items.add(Items.GOLDEN_SWORD); - items.add(Items.GOLDEN_SHOVEL); - items.add(Items.GOLDEN_PICKAXE); - items.add(Items.GOLDEN_AXE); - items.add(Items.STRING); - items.add(Items.FEATHER); - items.add(Items.GUNPOWDER); - items.add(Items.WOODEN_HOE); - items.add(Items.STONE_HOE); - items.add(Items.IRON_HOE); - items.add(Items.DIAMOND_HOE); - items.add(Items.GOLDEN_HOE); - items.add(Items.WHEAT_SEEDS); - items.add(Items.WHEAT); - items.add(Items.BREAD); - items.add(Items.LEATHER_HELMET); - items.add(Items.LEATHER_CHESTPLATE); - items.add(Items.LEATHER_LEGGINGS); - items.add(Items.LEATHER_BOOTS); - items.add(Items.CHAINMAIL_HELMET); - items.add(Items.CHAINMAIL_CHESTPLATE); - items.add(Items.CHAINMAIL_LEGGINGS); - items.add(Items.CHAINMAIL_BOOTS); - items.add(Items.IRON_HELMET); - items.add(Items.IRON_CHESTPLATE); - items.add(Items.IRON_LEGGINGS); - items.add(Items.IRON_BOOTS); - items.add(Items.DIAMOND_HELMET); - items.add(Items.DIAMOND_CHESTPLATE); - items.add(Items.DIAMOND_LEGGINGS); - items.add(Items.DIAMOND_BOOTS); - items.add(Items.GOLDEN_HELMET); - items.add(Items.GOLDEN_CHESTPLATE); - items.add(Items.GOLDEN_LEGGINGS); - items.add(Items.GOLDEN_BOOTS); - items.add(Items.FLINT); - items.add(Items.PORKCHOP); - items.add(Items.COOKED_PORKCHOP); - items.add(Items.PAINTING); - items.add(Items.ENCHANTED_GOLDEN_APPLE); - if (ver >= 11607) items.add(Items.OAK_SIGN); - if (ver >= 11607) items.add(Items.OAK_DOOR); - items.add(Items.BUCKET); - items.add(Items.WATER_BUCKET); - items.add(Items.LAVA_BUCKET); - items.add(Items.MINECART); - items.add(Items.SADDLE); - items.add(Items.IRON_DOOR); - items.add(Items.REDSTONE); - items.add(Items.SNOWBALL); - items.add(Items.OAK_BOAT); - items.add(Items.LEATHER); - items.add(Items.MILK_BUCKET); - items.add(Items.BRICK); - items.add(Items.CLAY_BALL); - items.add(Items.SUGAR_CANE); - items.add(Items.PAPER); - items.add(Items.BOOK); - items.add(Items.SLIME_BALL); - items.add(Items.CHEST_MINECART); - items.add(Items.FURNACE_MINECART); - items.add(Items.EGG); - items.add(Items.COMPASS); - items.add(Items.FISHING_ROD); - items.add(Items.CLOCK); - items.add(Items.GLOWSTONE_DUST); - items.add(Items.COD); - items.add(Items.COOKED_COD); - items.add(Items.INK_SAC); - items.add(Items.BONE); - items.add(Items.SUGAR); - items.add(Items.CAKE); - items.add(Items.RED_BED); - items.add(Items.REPEATER); - items.add(Items.COOKIE); - items.add(Items.MAP); - items.add(Items.SHEARS); - items.add(Items.MELON_SLICE); - items.add(Items.PUMPKIN_SEEDS); - items.add(Items.MELON_SEEDS); - items.add(Items.BEEF); - items.add(Items.COOKED_BEEF); - items.add(Items.CHICKEN); - items.add(Items.COOKED_CHICKEN); - items.add(Items.ROTTEN_FLESH); - items.add(Items.ENDER_PEARL); - items.add(Items.BLAZE_ROD); - items.add(Items.GHAST_TEAR); - items.add(Items.GOLD_NUGGET); - items.add(Items.NETHER_WART); - items.add(Items.GLASS_BOTTLE); - items.add(Items.SPIDER_EYE); - items.add(Items.FERMENTED_SPIDER_EYE); - items.add(Items.BLAZE_POWDER); - items.add(Items.MAGMA_CREAM); - items.add(Items.BREWING_STAND); - items.add(Items.CAULDRON); - items.add(Items.ENDER_EYE); - items.add(Items.GLISTERING_MELON_SLICE); - items.add(Items.EXPERIENCE_BOTTLE); - items.add(Items.FIRE_CHARGE); + if (ver >= VersionInt("i0.31.01")) items.add(Items.IRON_SHOVEL); + if (ver >= VersionInt("i0.31.02")) items.add(Items.IRON_PICKAXE); + if (ver >= VersionInt("i0.31.02")) items.add(Items.IRON_AXE); + if (ver >= VersionInt("i0.31.02")) items.add(Items.FLINT_AND_STEEL); + if (ver >= VersionInt("i0.31.01")) items.add(Items.APPLE); + if (ver >= VersionInt("i0.31.03")) items.add(Items.BOW); + if (ver >= VersionInt("i0.31.03")) items.add(Items.ARROW); + if (ver >= VersionInt("i0.31.05")) items.add(Items.COAL); + if (ver >= VersionInt("i0.31.05")) items.add(Items.DIAMOND); + if (ver >= VersionInt("i0.31.05")) items.add(Items.IRON_INGOT); + if (ver >= VersionInt("i0.31.05")) items.add(Items.GOLD_INGOT); + if (ver >= VersionInt("1.16")) items.add(Items.NETHERITE_INGOT); + if (ver >= VersionInt("i0.31.01")) items.add(Items.IRON_SWORD); + if (ver >= VersionInt("i0.31.05")) items.add(Items.WOODEN_SWORD); + if (ver >= VersionInt("i0.31.05")) items.add(Items.WOODEN_SHOVEL); + if (ver >= VersionInt("i0.31.05")) items.add(Items.WOODEN_PICKAXE); + if (ver >= VersionInt("i0.31.05")) items.add(Items.WOODEN_AXE); + if (ver >= VersionInt("i0.31.05")) items.add(Items.STONE_SWORD); + if (ver >= VersionInt("i0.31.05")) items.add(Items.STONE_SHOVEL); + if (ver >= VersionInt("i0.31.05")) items.add(Items.STONE_PICKAXE); + if (ver >= VersionInt("i0.31.05")) items.add(Items.STONE_AXE); + if (ver >= VersionInt("i0.31.05")) items.add(Items.DIAMOND_SWORD); + if (ver >= VersionInt("i0.31.05")) items.add(Items.DIAMOND_SHOVEL); + if (ver >= VersionInt("i0.31.05")) items.add(Items.DIAMOND_PICKAXE); + if (ver >= VersionInt("i0.31.05")) items.add(Items.DIAMOND_AXE); + if (ver >= VersionInt("i0.31.05")) items.add(Items.STICK); + if (ver >= VersionInt("i0.31.06")) items.add(Items.BOWL); + if (ver >= VersionInt("i0.31.06")) items.add(Items.MUSHROOM_STEW); + if (ver >= VersionInt("i0.31.06")) items.add(Items.GOLDEN_SWORD); + if (ver >= VersionInt("i0.31.06")) items.add(Items.GOLDEN_SHOVEL); + if (ver >= VersionInt("i0.31.06")) items.add(Items.GOLDEN_PICKAXE); + if (ver >= VersionInt("i0.31.06")) items.add(Items.GOLDEN_AXE); + if (ver >= VersionInt("1.16")) items.add(Items.NETHERITE_SWORD); + if (ver >= VersionInt("1.16")) items.add(Items.NETHERITE_SHOVEL); + if (ver >= VersionInt("1.16")) items.add(Items.NETHERITE_PICKAXE); + if (ver >= VersionInt("1.16")) items.add(Items.NETHERITE_AXE); + if (ver >= VersionInt("i0.31.06")) items.add(Items.STRING); + if (ver >= VersionInt("i0.31.06")) items.add(Items.FEATHER); + if (ver >= VersionInt("i0.31.06")) items.add(Items.GUNPOWDER); + if (ver >= VersionInt("i0.31.07")) items.add(Items.WOODEN_HOE); + if (ver >= VersionInt("i0.31.07")) items.add(Items.STONE_HOE); + if (ver >= VersionInt("i0.31.07")) items.add(Items.IRON_HOE); + if (ver >= VersionInt("i0.31.07")) items.add(Items.DIAMOND_HOE); + if (ver >= VersionInt("i0.31.07")) items.add(Items.GOLDEN_HOE); + if (ver >= VersionInt("i0.31.07")) items.add(Items.WHEAT_SEEDS); + if (ver >= VersionInt("i0.31.07")) items.add(Items.WHEAT); + if (ver >= VersionInt("i0.31.07")) items.add(Items.BREAD); + if (ver >= VersionInt("i0.31.01")) items.add(Items.LEATHER_HELMET); + if (ver >= VersionInt("i0.31.01")) items.add(Items.LEATHER_CHESTPLATE); + if (ver >= VersionInt("i0.31.08")) items.add(Items.LEATHER_LEGGINGS); + if (ver >= VersionInt("i0.31.08")) items.add(Items.LEATHER_BOOTS); + if (ver >= VersionInt("i0.31.01")) items.add(Items.CHAINMAIL_HELMET); + if (ver >= VersionInt("i0.31.01")) items.add(Items.CHAINMAIL_CHESTPLATE); + if (ver >= VersionInt("i0.31.08")) items.add(Items.CHAINMAIL_LEGGINGS); + if (ver >= VersionInt("i0.31.08")) items.add(Items.CHAINMAIL_BOOTS); + if (ver >= VersionInt("i0.31.01")) items.add(Items.IRON_HELMET); + if (ver >= VersionInt("i0.31.01")) items.add(Items.IRON_CHESTPLATE); + if (ver >= VersionInt("i0.31.08")) items.add(Items.IRON_LEGGINGS); + if (ver >= VersionInt("i0.31.08")) items.add(Items.IRON_BOOTS); + if (ver >= VersionInt("i0.31.07")) items.add(Items.DIAMOND_HELMET); + if (ver >= VersionInt("i0.31.07")) items.add(Items.DIAMOND_CHESTPLATE); + if (ver >= VersionInt("i0.31.08")) items.add(Items.DIAMOND_LEGGINGS); + if (ver >= VersionInt("i0.31.08")) items.add(Items.DIAMOND_BOOTS); + if (ver >= VersionInt("i0.31.07")) items.add(Items.GOLDEN_HELMET); + if (ver >= VersionInt("i0.31.07")) items.add(Items.GOLDEN_CHESTPLATE); + if (ver >= VersionInt("i0.31.08")) items.add(Items.GOLDEN_LEGGINGS); + if (ver >= VersionInt("i0.31.08")) items.add(Items.GOLDEN_BOOTS); + if (ver >= VersionInt("1.16")) items.add(Items.NETHERITE_HELMET); + if (ver >= VersionInt("1.16")) items.add(Items.NETHERITE_CHESTPLATE); + if (ver >= VersionInt("1.16")) items.add(Items.NETHERITE_LEGGINGS); + if (ver >= VersionInt("1.16")) items.add(Items.NETHERITE_BOOTS); + if (ver >= VersionInt("i0.31.08")) items.add(Items.FLINT); + if (ver >= VersionInt("i0.31.08")) items.add(Items.PORKCHOP); + if (ver >= VersionInt("i0.31.08")) items.add(Items.COOKED_PORKCHOP); + if (ver >= VersionInt("i0.31.09")) items.add(Items.PAINTING); + if (ver >= VersionInt("i0.31.09")) items.add(Items.ENCHANTED_GOLDEN_APPLE); + if (ver >= VersionInt("i0.31.09")) items.add(Items.OAK_SIGN); + if (ver >= VersionInt("i0.31.09")) items.add(Items.OAK_DOOR); + if (ver >= VersionInt("i0.31.10")) items.add(Items.BUCKET); + if (ver >= VersionInt("i0.31.10")) items.add(Items.WATER_BUCKET); + if (ver >= VersionInt("i0.31.10")) items.add(Items.LAVA_BUCKET); + if (ver >= VersionInt("i0.31.10")) items.add(Items.MINECART); + if (ver >= VersionInt("i0.31.11")) items.add(Items.SADDLE); + if (ver >= VersionInt("a1.0.1")) items.add(Items.IRON_DOOR); + if (ver >= VersionInt("a1.0.1")) items.add(Items.REDSTONE); + if (ver >= VersionInt("a1.0.5")) items.add(Items.SNOWBALL); + if (ver >= VersionInt("a1.0.6")) items.add(Items.OAK_BOAT); + if (ver >= VersionInt("a1.0.8")) items.add(Items.LEATHER); + if (ver >= VersionInt("a1.0.8")) items.add(Items.MILK_BUCKET); + if (ver >= VersionInt("a1.0.11")) items.add(Items.BRICK); + if (ver >= VersionInt("a1.0.11")) items.add(Items.CLAY_BALL); + if (ver >= VersionInt("a1.0.11")) items.add(Items.SUGAR_CANE); + if (ver >= VersionInt("a1.0.11")) items.add(Items.PAPER); + if (ver >= VersionInt("a1.0.11")) items.add(Items.BOOK); + if (ver >= VersionInt("a1.0.11")) items.add(Items.SLIME_BALL); + if (ver >= VersionInt("a1.0.14")) items.add(Items.CHEST_MINECART); + if (ver >= VersionInt("a1.0.14")) items.add(Items.FURNACE_MINECART); + if (ver >= VersionInt("a1.0.14")) items.add(Items.EGG); + if (ver >= VersionInt("a1.1.0")) items.add(Items.COMPASS); + if (ver >= VersionInt("a1.1.1")) items.add(Items.FISHING_ROD); + if (ver >= VersionInt("a1.2.0")) items.add(Items.CLOCK); + if (ver >= VersionInt("a1.2.0")) items.add(Items.GLOWSTONE_DUST); + if (ver >= VersionInt("a1.2.0")) items.add(Items.COD); + if (ver >= VersionInt("a1.2.0")) items.add(Items.COOKED_COD); + if (ver >= VersionInt("b1.2")) items.add(Items.INK_SAC); + if (ver >= VersionInt("b1.2")) items.add(Items.BONE); + if (ver >= VersionInt("b1.2")) items.add(Items.SUGAR); + if (ver >= VersionInt("b1.2")) items.add(Items.CAKE); + if (ver >= VersionInt("b1.3")) items.add(Items.RED_BED); + if (ver >= VersionInt("b1.3")) items.add(Items.REPEATER); + if (ver >= VersionInt("b1.4")) items.add(Items.COOKIE); + if (ver >= VersionInt("b1.6.3")) items.add(Items.MAP); + if (ver >= VersionInt("b1.7")) items.add(Items.SHEARS); + if (ver >= VersionInt("b1.8")) items.add(Items.MELON_SLICE); + if (ver >= VersionInt("b1.8")) items.add(Items.PUMPKIN_SEEDS); + if (ver >= VersionInt("b1.8")) items.add(Items.MELON_SEEDS); + if (ver >= VersionInt("b1.8")) items.add(Items.BEEF); + if (ver >= VersionInt("b1.8")) items.add(Items.COOKED_BEEF); + if (ver >= VersionInt("b1.8")) items.add(Items.CHICKEN); + if (ver >= VersionInt("b1.8")) items.add(Items.COOKED_CHICKEN); + if (ver >= VersionInt("b1.8")) items.add(Items.ROTTEN_FLESH); + if (ver >= VersionInt("b1.8")) items.add(Items.ENDER_PEARL); + if (ver >= VersionInt("b1.9")) items.add(Items.BLAZE_ROD); + if (ver >= VersionInt("b1.9")) items.add(Items.GHAST_TEAR); + if (ver >= VersionInt("b1.9")) items.add(Items.GOLD_NUGGET); + if (ver >= VersionInt("b1.9")) items.add(Items.NETHER_WART); + if (ver >= VersionInt("b1.9.2")) items.add(Items.GLASS_BOTTLE); + if (ver >= VersionInt("b1.9.2")) items.add(Items.SPIDER_EYE); + if (ver >= VersionInt("b1.9.2")) items.add(Items.FERMENTED_SPIDER_EYE); + if (ver >= VersionInt("b1.9.2")) items.add(Items.BLAZE_POWDER); + if (ver >= VersionInt("b1.9.2")) items.add(Items.MAGMA_CREAM); + if (ver >= VersionInt("b1.9.3")) items.add(Items.BREWING_STAND); + if (ver >= VersionInt("b1.9.2")) items.add(Items.CAULDRON); + if (ver >= VersionInt("b1.9.3")) items.add(Items.ENDER_EYE); + if (ver >= VersionInt("b1.9.4")) items.add(Items.GLISTERING_MELON_SLICE); + if (ver >= VersionInt("1.2.1")) items.add(Items.EXPERIENCE_BOTTLE); + if (ver >= VersionInt("1.2.1")) items.add(Items.FIRE_CHARGE); //DISCS - for ( ItemStack itemstack : CreativeModeTabs.searchTab().getDisplayItems()) { - Item item = itemstack.getItem(); - if (!items.contains(item) && itemstack.is(ItemTags.CREEPER_DROP_MUSIC_DISCS)) - items.add(item); + + if (ver >= VersionInt("a1.0.14")) items.add(Items.MUSIC_DISC_13); + if (ver >= VersionInt("a1.0.14")) items.add(Items.MUSIC_DISC_CAT); + if (ver >= VersionInt("b1.9.2")) items.add(Items.MUSIC_DISC_BLOCKS); + if (ver >= VersionInt("b1.9.2")) items.add(Items.MUSIC_DISC_CHIRP); + if (ver >= VersionInt("b1.9.2")) items.add(Items.MUSIC_DISC_FAR); + if (ver >= VersionInt("b1.9.2")) items.add(Items.MUSIC_DISC_MALL); + if (ver >= VersionInt("b1.9.2")) items.add(Items.MUSIC_DISC_MELLOHI); + if (ver >= VersionInt("b1.9.2")) items.add(Items.MUSIC_DISC_STAL); + if (ver >= VersionInt("b1.9.2")) items.add(Items.MUSIC_DISC_STRAD); + if (ver >= VersionInt("b1.9.2")) items.add(Items.MUSIC_DISC_WARD); + if (ver >= VersionInt("b1.9.2")) items.add(Items.MUSIC_DISC_11); + if (ver >= VersionInt("1.4.3")) items.add(Items.MUSIC_DISC_WAIT); + + if (CandyTweak.OLD_CREATIVE_INVENTORY_ALWAYS_SHOW_MODERN_ITEMS.get()) { + for ( ItemStack itemstack : CreativeModeTabs.searchTab().getDisplayItems()) { + Item item = itemstack.getItem(); + if (!items.contains(item) && itemstack.is(ItemTags.CREEPER_DROP_MUSIC_DISCS)) + items.add(item); + } } //DYE - for ( ItemStack itemstack : CreativeModeTabs.searchTab().getDisplayItems()) { - Item item = itemstack.getItem(); - if (!items.contains(item) && (item instanceof DyeItem)) - items.add(item); + + if (ver >= VersionInt("b1.2")) items.add(Items.RED_DYE); + if (ver >= VersionInt("b1.2")) items.add(Items.GREEN_DYE); + if (ver >= VersionInt("b1.2") && ver < VersionInt("1.14")) items.add(Items.COCOA_BEANS); + if (ver >= VersionInt("1.14")) items.add(Items.BROWN_DYE); + if (ver >= VersionInt("b1.2") && ver < VersionInt("1.14")) items.add(Items.LAPIS_LAZULI); + if (ver >= VersionInt("1.14")) items.add(Items.BLUE_DYE); + if (ver >= VersionInt("b1.2")) items.add(Items.PURPLE_DYE); + if (ver >= VersionInt("b1.2")) items.add(Items.CYAN_DYE); + if (ver >= VersionInt("b1.2")) items.add(Items.LIGHT_GRAY_DYE); + if (ver >= VersionInt("b1.2")) items.add(Items.GRAY_DYE); + if (ver >= VersionInt("b1.2")) items.add(Items.PINK_DYE); + if (ver >= VersionInt("b1.2")) items.add(Items.LIME_DYE); + if (ver >= VersionInt("b1.2")) items.add(Items.YELLOW_DYE); + if (ver >= VersionInt("b1.2")) items.add(Items.LIGHT_BLUE_DYE); + if (ver >= VersionInt("b1.2")) items.add(Items.MAGENTA_DYE); + if (ver >= VersionInt("b1.2")) items.add(Items.ORANGE_DYE); + if (ver >= VersionInt("1.14")) items.add(Items.WHITE_DYE); + if (ver >= VersionInt("1.14")) items.add(Items.BLACK_DYE); + + if (CandyTweak.OLD_CREATIVE_INVENTORY_ALWAYS_SHOW_MODERN_ITEMS.get()) { + for (ItemStack itemstack : CreativeModeTabs.searchTab().getDisplayItems()) { + Item item = itemstack.getItem(); + if (!items.contains(item) && (item instanceof DyeItem)) + items.add(item); + } } //MISC items.add(Items.BONE_MEAL); //EGGS - for ( SpawnEggItem egg : SpawnEggItem.eggs()) { - items.add(egg); + + if (ver >= VersionInt("1.1")) items.add(Items.MOOSHROOM_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.OCELOT_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.CREEPER_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.SKELETON_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.SPIDER_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.ZOMBIE_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.SLIME_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.GHAST_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.VILLAGER_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.ZOMBIFIED_PIGLIN_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.ENDERMAN_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.PIG_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.CAVE_SPIDER_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.SHEEP_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.SILVERFISH_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.COW_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.BLAZE_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.CHICKEN_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.MAGMA_CUBE_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.SQUID_SPAWN_EGG); + if (ver >= VersionInt("1.1")) items.add(Items.WOLF_SPAWN_EGG); + if (CandyTweak.OLD_CREATIVE_INVENTORY_ALWAYS_SHOW_MODERN_ITEMS.get()) { + for (SpawnEggItem egg : SpawnEggItem.eggs()) { + if (!items.contains(egg)) + items.add(egg); + } } - for ( ItemStack itemstack : CreativeModeTabs.searchTab().getDisplayItems()) { - Item item = itemstack.getItem(); - if (!items.contains(item) && !(item instanceof SpawnEggItem) && !(item instanceof PotionItem)) - items.add(item); + //Everything Else + + if (CandyTweak.OLD_CREATIVE_INVENTORY_ALWAYS_SHOW_MODERN_ITEMS.get()) { + for ( ItemStack itemstack : CreativeModeTabs.searchTab().getDisplayItems()) { + Item item = itemstack.getItem(); + if (!items.contains(item) && !(item instanceof SpawnEggItem) && !(item instanceof PotionItem)) + items.add(item); + } } var itemstacks = new ArrayList(); diff --git a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java index 9642f5c24..d7381d98d 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java +++ b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java @@ -3,6 +3,7 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import mod.adrenix.nostalgic.helper.candy.screen.inventory.ClassicCreativeModeInventoryScreen; import mod.adrenix.nostalgic.helper.candy.screen.inventory.InventoryScreenHelper; +import mod.adrenix.nostalgic.tweak.config.CandyTweak; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; @@ -39,13 +40,23 @@ private CreativeModeInventoryScreenMixin(CreativeModeInventoryScreen.ItemPickerM super(menu, playerInventory, title); } + @Inject( + method = "", + at = @At("HEAD") + ) + public void nt_creative_inventory$OverriteInv(CallbackInfo callback) { + + if (CandyTweak.OLD_CREATIVE_INVENTORY.get()) + this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen(this.minecraft.player )); + } @Inject( method = "containerTick", at = @At("HEAD") ) public void nt_creative_inventory$containerTick(CallbackInfo callback) { - this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen(this.minecraft.player )); + if (CandyTweak.OLD_CREATIVE_INVENTORY.get()) + this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen(this.minecraft.player )); } diff --git a/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java b/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java index 98ddeaf60..353731245 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java +++ b/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java @@ -178,8 +178,13 @@ public interface CandyTweak TweakFlag DISABLE_EMPTY_ARMOR_TEXTURE = TweakFlag.client(false, CandyGroup.INTERFACE_INVENTORY).build(); TweakFlag DISABLE_EMPTY_SHIELD_TEXTURE = TweakFlag.client(false, CandyGroup.INTERFACE_INVENTORY).build(); TweakFlag INVERTED_PLAYER_LIGHTING = TweakFlag.client(true, CandyGroup.INTERFACE_INVENTORY).build(); - TweakEnum OLD_CREATIVE_HOTBAR = TweakEnum.server(Hotbar.CLASSIC, CandyGroup.INTERFACE_INVENTORY).ignoreNetworkCheck().whenDisabled(Hotbar.MODERN).build(); - TweakFlag OLD_CREATIVE_INVENTORY= TweakFlag.server(false, CandyGroup.INTERFACE_INVENTORY).ignoreNetworkCheck().build(); + + // Creative Inventory Screen + + TweakEnum OLD_CREATIVE_HOTBAR = TweakEnum.server(Hotbar.CLASSIC, CandyGroup.INTERFACE_INVENTORY_CREATIVE).ignoreNetworkCheck().whenDisabled(Hotbar.MODERN).build(); + TweakFlag OLD_CREATIVE_INVENTORY = TweakFlag.client(false, CandyGroup.INTERFACE_INVENTORY_CREATIVE).build(); + TweakText OLD_CREATIVE_INVENTORY_VERSION = TweakText.client("r1.2.5", CandyGroup.INTERFACE_INVENTORY_CREATIVE).build(); + TweakFlag OLD_CREATIVE_INVENTORY_ALWAYS_SHOW_MODERN_ITEMS = TweakFlag.client(true, CandyGroup.INTERFACE_INVENTORY_CREATIVE).build(); // Generic Screen diff --git a/common/src/main/java/mod/adrenix/nostalgic/tweak/container/group/CandyGroup.java b/common/src/main/java/mod/adrenix/nostalgic/tweak/container/group/CandyGroup.java index 45068a959..d5657f0ec 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/tweak/container/group/CandyGroup.java +++ b/common/src/main/java/mod/adrenix/nostalgic/tweak/container/group/CandyGroup.java @@ -40,6 +40,7 @@ public interface CandyGroup Container INTERFACE_ANVIL = Container.group(INTERFACE, "interface_anvil").color(0x969696).icon(Blocks.ANVIL).build(); Container INTERFACE_DEATH = Container.group(INTERFACE, "interface_death").color(0xC7C7C7).icon(Blocks.SKELETON_SKULL).build(); Container INTERFACE_INVENTORY = Container.group(INTERFACE, "interface_inventory").color(0xB6896C).icon(Blocks.PLAYER_HEAD).build(); + Container INTERFACE_INVENTORY_CREATIVE = Container.group(INTERFACE, "interface_inventory_creative").color(0x2ABEEB).icon(Blocks.DIAMOND_BLOCK).build(); Container INTERFACE_CRAFTING = Container.group(INTERFACE, "interface_crafting").color(0xF38A47).icon(Blocks.CRAFTING_TABLE).build(); Container INTERFACE_FURNACE = Container.group(INTERFACE, "interface_furnace").color(0x8F8F90).icon(Blocks.FURNACE).build(); Container INTERFACE_DEBUG = Container.group(INTERFACE, "interface_debug").color(0xFB4A4C).icon(Icons.BUG).build(); diff --git a/common/src/main/resources/assets/nostalgic_tweaks/lang/en_us.json b/common/src/main/resources/assets/nostalgic_tweaks/lang/en_us.json index 2df19e8e1..6089ef778 100644 --- a/common/src/main/resources/assets/nostalgic_tweaks/lang/en_us.json +++ b/common/src/main/resources/assets/nostalgic_tweaks/lang/en_us.json @@ -596,6 +596,7 @@ "gui.nostalgic_tweaks.container.eyeCandy.interface_debug_chart": "Chart Data", "gui.nostalgic_tweaks.container.eyeCandy.interface_furnace": "Furnace Screen", "gui.nostalgic_tweaks.container.eyeCandy.interface_inventory": "Inventory Screen", + "gui.nostalgic_tweaks.container.eyeCandy.interface_inventory_creative": "Creative Inventory Screen", "gui.nostalgic_tweaks.container.eyeCandy.interface_death": "Death Screen", "gui.nostalgic_tweaks.container.eyeCandy.interface_title": "Title Screen", "gui.nostalgic_tweaks.container.eyeCandy.interface_title_logo": "Logo", @@ -1217,6 +1218,13 @@ "gui.nostalgic_tweaks.config.eyeCandy.furnaceBook.enum.large": "The recipe book button will look similar to the modern button but will have an§a old school§r appearance. It will be located at the top right corner of the furnace screen.", "gui.nostalgic_tweaks.config.eyeCandy.furnaceBook.enum.small": "The recipe book button will be a small unobtrusive button with a question mark. It will be located at the top right corner of the furnace screen.", + "gui.nostalgic_tweaks.config.eyeCandy.oldCreativeInventory": "Old Creative Inventory Screen", + "gui.nostalgic_tweaks.config.eyeCandy.oldCreativeInventory.info": "The pre 1.3 inventory screen", + "gui.nostalgic_tweaks.config.eyeCandy.oldCreativeInventoryVersion": "Creative Inventory Version", + "gui.nostalgic_tweaks.config.eyeCandy.oldCreativeInventoryVersion.info": "The minimum version requirement for the set of the top inventory items.", + "gui.nostalgic_tweaks.config.eyeCandy.oldCreativeInventoryAlwaysShowModernItems": "Always show all items", + "gui.nostalgic_tweaks.config.eyeCandy.oldCreativeInventoryAlwaysShowModernItems.info": "Always show the rest of the items at the bottom of the creative inventory, even if they don't match the specified inventory version", + "gui.nostalgic_tweaks.config.eyeCandy.oldInventory": "Old Inventory Screen", "gui.nostalgic_tweaks.config.eyeCandy.oldInventory.info": "Bring back the old inventory screen texture. This will widen the player box background and change where the crafting grid is located. Other inventory tweaks can be used even if this tweak is§c disabled§r.", "gui.nostalgic_tweaks.config.eyeCandy.inventoryBook": "Recipe Book", From 3cd03e06f80a16f846c3ad1af92db025bc5c1c7a Mon Sep 17 00:00:00 2001 From: Xenthio Date: Wed, 25 Sep 2024 21:50:32 +1000 Subject: [PATCH 6/9] Fix many things Fix strange hotbar quirk. Fix new inventory showing up for a frame. Fix itempicker having pickall and dragto. Add ability to drop by clicking outside the window. --- .../ClassicCreativeModeInventoryScreen.java | 44 ++++++++++++++++--- .../CreativeModeInventoryScreenMixin.java | 13 +++++- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java index 4b6057dca..e373e5e8b 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java @@ -1,6 +1,7 @@ package mod.adrenix.nostalgic.helper.candy.screen.inventory; import com.google.common.reflect.Reflection; +import mod.adrenix.nostalgic.tweak.config.CandyTweak; import mod.adrenix.nostalgic.util.common.asset.TextureLocation; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -76,11 +77,24 @@ protected void slotClicked(@Nullable Slot slot, int slotId, int mouseButton, Cli if (slot != null && !slot.mayPickup(this.minecraft.player)) { return; } - if (slot == null) return; - ItemStack itemStack = ((CreativeModeInventoryScreen.ItemPickerMenu) this.menu).getCarried(); - ItemStack itemStack2 = slot.getItem(); int j; - if (slot.container == CONTAINER) { + ItemStack itemStack; + ItemStack itemStack2; + if (!this.menu.getCarried().isEmpty() && this.hasClickedOutside) { + if (mouseButton == 0) { + this.minecraft.player.drop(((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried(), true); + this.minecraft.gameMode.handleCreativeModeItemDrop(((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried()); + this.menu.setCarried(ItemStack.EMPTY); + } + + if (mouseButton == 1) { + itemStack = ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried().split(1); + this.minecraft.player.drop(itemStack, true); + this.minecraft.gameMode.handleCreativeModeItemDrop(itemStack); + } + } else if (slot != null && slot.container == CONTAINER) { + itemStack = ((CreativeModeInventoryScreen.ItemPickerMenu) this.menu).getCarried(); + itemStack2 = slot.getItem(); if (type == ClickType.SWAP) { if (!itemStack2.isEmpty()) { this.minecraft.player.getInventory().setItem(mouseButton, itemStack2.copyWithCount(itemStack2.getMaxStackSize())); @@ -154,6 +168,10 @@ protected void slotClicked(@Nullable Slot slot, int slotId, int mouseButton, Cli } } + protected boolean hasClickedOutside(double mouseX, double mouseY, int guiLeft, int guiTop, int mouseButton) { + return mouseX < (double)guiLeft || mouseY < (double)guiTop || mouseX >= (double)(guiLeft + this.imageWidth) || mouseY >= (double)(guiTop + this.imageHeight); + } + private boolean scrolling; private float scrollOffs; @@ -200,7 +218,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) { return true; } } - + this.hasClickedOutside = hasClickedOutside(mouseX, mouseY, this.leftPos, this.topPos, button); return super.mouseClicked(mouseX, mouseY, button); } @@ -257,6 +275,14 @@ public boolean mayPickup(Player player) { } + @Override + protected void containerTick() { + super.containerTick(); + + if (!CandyTweak.OLD_CREATIVE_INVENTORY.get()) + this.minecraft.setScreen(new CreativeModeInventoryScreen( this.minecraft.player, minecraft.level.enabledFeatures(), false)); + } + public static class ClassicItemPickerMenu extends CreativeModeInventoryScreen.ItemPickerMenu { Player localPlayer; @@ -296,6 +322,14 @@ public void refreshItems() { this.items.addAll(ClassicCreativeModeItemHelper.GetItems()); } + public boolean canTakeItemForPickAll(ItemStack stack, Slot slot) { + return slot.container != ClassicCreativeModeInventoryScreen.CONTAINER; + } + + public boolean canDragTo(Slot slot) { + return slot.container != ClassicCreativeModeInventoryScreen.CONTAINER; + } + @Override public void scrollTo(float pos) { int i = this.getRowIndexForScroll(pos); diff --git a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java index d7381d98d..cae58d404 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java +++ b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java @@ -44,7 +44,18 @@ private CreativeModeInventoryScreenMixin(CreativeModeInventoryScreen.ItemPickerM method = "", at = @At("HEAD") ) - public void nt_creative_inventory$OverriteInv(CallbackInfo callback) { + public void nt_creative_inventory$OverrideInv(CallbackInfo callback) { + + if (CandyTweak.OLD_CREATIVE_INVENTORY.get()) + this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen(this.minecraft.player )); + } + + + @Inject( + method = "init", + at = @At("HEAD") + ) + public void nt_creative_inventory$OverrideInit(CallbackInfo callback) { if (CandyTweak.OLD_CREATIVE_INVENTORY.get()) this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen(this.minecraft.player )); From d113809f5992648df5c36c4a9a48ba112fac57e2 Mon Sep 17 00:00:00 2001 From: Xenthio Date: Wed, 25 Sep 2024 22:11:49 +1000 Subject: [PATCH 7/9] Update ClassicCreativeModeInventoryScreen.java --- .../screen/inventory/ClassicCreativeModeInventoryScreen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java index e373e5e8b..54cf9ac3a 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java @@ -232,7 +232,7 @@ public boolean mouseReleased(double mouseX, double mouseY, int button) { } @Override protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) { - guiGraphics.drawString(this.font, "Item Selection", this.titleLabelX, this.titleLabelY, 4210752, false); + guiGraphics.drawString(this.font, "Item selection", this.titleLabelX, this.titleLabelY, 4210752, false); } @Override From f1c684f559efc65321389c3d2ae7b626c4defd2e Mon Sep 17 00:00:00 2001 From: Xenthio Date: Thu, 26 Sep 2024 12:28:14 +1000 Subject: [PATCH 8/9] Add Minecraft Classic 0.30 Menu --- .../nostalgic/config/ClientConfig.java | 2 +- .../ClassicCreativeModeInventoryScreen.java | 309 +++------------- .../OldCreativeModeInventoryScreen.java | 331 ++++++++++++++++++ ...er.java => OldCreativeModeItemHelper.java} | 64 +++- .../CreativeModeInventoryScreenMixin.java | 48 +-- .../nostalgic/tweak/config/CandyTweak.java | 2 +- .../tweak/enums/OldCreativeInventory.java | 24 ++ 7 files changed, 481 insertions(+), 299 deletions(-) create mode 100644 common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/OldCreativeModeInventoryScreen.java rename common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/{ClassicCreativeModeItemHelper.java => OldCreativeModeItemHelper.java} (88%) create mode 100644 common/src/main/java/mod/adrenix/nostalgic/tweak/enums/OldCreativeInventory.java diff --git a/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java b/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java index 2aea46683..072ba7128 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java +++ b/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java @@ -340,7 +340,7 @@ public static class EyeCandy // Creative Inventory Screen public Hotbar oldCreativeHotbar = CandyTweak.OLD_CREATIVE_HOTBAR.register("oldCreativeHotbar"); - public boolean oldCreativeInventory = CandyTweak.OLD_CREATIVE_INVENTORY.register("oldCreativeInventory"); + public OldCreativeInventory oldCreativeInventory = CandyTweak.OLD_CREATIVE_INVENTORY.register("oldCreativeInventory"); public String oldCreativeInventoryVersion = CandyTweak.OLD_CREATIVE_INVENTORY_VERSION.register("oldCreativeInventoryVersion"); public boolean oldCreativeInventoryAlwaysShowModernItems = CandyTweak.OLD_CREATIVE_INVENTORY_ALWAYS_SHOW_MODERN_ITEMS.register("oldCreativeInventoryAlwaysShowModernItems"); diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java index 54cf9ac3a..59f537937 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeInventoryScreen.java @@ -1,238 +1,53 @@ package mod.adrenix.nostalgic.helper.candy.screen.inventory; -import com.google.common.reflect.Reflection; -import mod.adrenix.nostalgic.tweak.config.CandyTweak; import mod.adrenix.nostalgic.util.common.asset.TextureLocation; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.loader.impl.util.Localization; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.screens.inventory.*; -import net.minecraft.client.multiplayer.ClientPacketListener; -import net.minecraft.client.multiplayer.SessionSearchTrees; +import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; +import net.minecraft.client.gui.screens.inventory.EffectRenderingInventoryScreen; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.searchtree.SearchTree; -import net.minecraft.core.Holder; -import net.minecraft.core.Registry; import net.minecraft.core.component.DataComponents; -import net.minecraft.data.tags.ItemTagsProvider; -import net.minecraft.locale.Language; import net.minecraft.network.chat.CommonComponents; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.Mth; import net.minecraft.world.Container; +import net.minecraft.world.InteractionHand; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.flag.FeatureFlagSet; -import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ClickType; import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.*; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import org.jetbrains.annotations.Nullable; +import net.minecraft.world.item.ItemStack; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.Locale; - - -@Environment(EnvType.CLIENT) public class ClassicCreativeModeInventoryScreen extends EffectRenderingInventoryScreen { - private static final int NUM_ROWS = 9; - private static final int NUM_COLS = 8; - private static final int CONTAINER_SIZE = 72; + + private static final int NUM_ROWS = 5; + private static final int NUM_COLS = 9; + private static final int CONTAINER_SIZE = 45; static final SimpleContainer CONTAINER = new SimpleContainer(CONTAINER_SIZE); - private CreativeInventoryListener listener; + LocalPlayer player; public ClassicCreativeModeInventoryScreen(LocalPlayer localPlayer) { super(new ClassicCreativeModeInventoryScreen.ClassicItemPickerMenu(localPlayer), localPlayer.getInventory(), CommonComponents.EMPTY); localPlayer.containerMenu = this.menu; this.menu.minecraft = this.minecraft; - this.imageHeight = 208; - this.imageWidth = 176; - this.leftPos = (this.width - this.imageWidth) / 2; - this.topPos = (this.height - this.imageHeight) / 2; this.menu.refreshItems(); + player = localPlayer; } @Override protected void init() { super.init(); - this.minecraft.player.inventoryMenu.removeSlotListener(this.listener); - this.listener = new CreativeInventoryListener(this.minecraft); - this.minecraft.player.inventoryMenu.addSlotListener(this.listener); + this.imageWidth = this.width / 2 + 120; + this.imageHeight = 180; + this.leftPos = this.width / 2 - 120; + this.topPos = 30; } - private boolean hasClickedOutside; - @Override - protected void slotClicked(@Nullable Slot slot, int slotId, int mouseButton, ClickType type) { - boolean bl = type == ClickType.QUICK_MOVE; - type = slotId == -999 && type == ClickType.PICKUP ? ClickType.THROW : type; - if (slot != null && !slot.mayPickup(this.minecraft.player)) { - return; - } - int j; - ItemStack itemStack; - ItemStack itemStack2; - if (!this.menu.getCarried().isEmpty() && this.hasClickedOutside) { - if (mouseButton == 0) { - this.minecraft.player.drop(((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried(), true); - this.minecraft.gameMode.handleCreativeModeItemDrop(((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried()); - this.menu.setCarried(ItemStack.EMPTY); - } - - if (mouseButton == 1) { - itemStack = ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried().split(1); - this.minecraft.player.drop(itemStack, true); - this.minecraft.gameMode.handleCreativeModeItemDrop(itemStack); - } - } else if (slot != null && slot.container == CONTAINER) { - itemStack = ((CreativeModeInventoryScreen.ItemPickerMenu) this.menu).getCarried(); - itemStack2 = slot.getItem(); - if (type == ClickType.SWAP) { - if (!itemStack2.isEmpty()) { - this.minecraft.player.getInventory().setItem(mouseButton, itemStack2.copyWithCount(itemStack2.getMaxStackSize())); - this.minecraft.player.inventoryMenu.broadcastChanges(); - } - - return; - } - - ItemStack itemStack3; - if (type == ClickType.CLONE) { - if (this.menu.getCarried().isEmpty() && slot.hasItem()) { - itemStack3 = slot.getItem(); - this.menu.setCarried(itemStack3.copyWithCount(itemStack3.getMaxStackSize())); - } - - return; - } - - if (type == ClickType.THROW) { - if (!itemStack2.isEmpty()) { - itemStack3 = itemStack2.copyWithCount(mouseButton == 0 ? 1 : itemStack2.getMaxStackSize()); - this.minecraft.player.drop(itemStack3, true); - this.minecraft.gameMode.handleCreativeModeItemDrop(itemStack3); - } - - return; - } - - if (!itemStack.isEmpty() && !itemStack2.isEmpty() && ItemStack.isSameItemSameComponents(itemStack, itemStack2)) { - if (mouseButton == 0) { - if (bl) { - itemStack.setCount(itemStack.getMaxStackSize()); - } else if (itemStack.getCount() < itemStack.getMaxStackSize()) { - itemStack.grow(1); - } - } else { - itemStack.shrink(1); - } - } else if (!itemStack2.isEmpty() && itemStack.isEmpty()) { - j = bl ? itemStack2.getMaxStackSize() : itemStack2.getCount(); - this.menu.setCarried(itemStack2.copyWithCount(j)); - } else if (mouseButton == 0) { - this.menu.setCarried(ItemStack.EMPTY); - } else if (!this.menu.getCarried().isEmpty()) { - this.menu.getCarried().shrink(1); - } - } else if (this.menu != null) { - var ff = CONTAINER_SIZE; - var ts = CONTAINER_SIZE - 9; - itemStack = slot == null ? ItemStack.EMPTY : this.menu.getSlot(slot.index).getItem(); - this.menu.clicked(slot == null ? slotId : slot.index, mouseButton, type, this.minecraft.player); - if (AbstractContainerMenu.getQuickcraftHeader(mouseButton) == 2) { - for(int k = 0; k < 9; ++k) { - this.minecraft.gameMode.handleCreativeModeItemAdd(this.menu.getSlot(CONTAINER_SIZE + k).getItem(), ts + k); - } - } else if (slot != null) { - itemStack2 = this.menu.getSlot(slot.index).getItem(); - this.minecraft.gameMode.handleCreativeModeItemAdd(itemStack2, slot.index - this.menu.slots.size() + 9 + ts); - j = ff + mouseButton; - if (type == ClickType.SWAP) { - this.minecraft.gameMode.handleCreativeModeItemAdd(itemStack, j - this.menu.slots.size() + 9 + ts); - } else if (type == ClickType.THROW && !itemStack.isEmpty()) { - ItemStack itemStack4 = itemStack.copyWithCount(mouseButton == 0 ? 1 : itemStack.getMaxStackSize()); - this.minecraft.player.drop(itemStack4, true); - this.minecraft.gameMode.handleCreativeModeItemDrop(itemStack4); - } - - this.minecraft.player.inventoryMenu.broadcastChanges(); - } - } - } - - protected boolean hasClickedOutside(double mouseX, double mouseY, int guiLeft, int guiTop, int mouseButton) { - return mouseX < (double)guiLeft || mouseY < (double)guiTop || mouseX >= (double)(guiLeft + this.imageWidth) || mouseY >= (double)(guiTop + this.imageHeight); - } - - private boolean scrolling; - private float scrollOffs; - - private boolean canScroll() { - return this.menu.canScroll(); - } - - protected boolean insideScrollbar(double mouseX, double mouseY) { - int i = this.leftPos; - int j = this.topPos; - int k = i + 155; - int l = j + 17; - int m = k + 14; - int n = l + 160 + 2; - return mouseX >= (double)k && mouseY >= (double)l && mouseX < (double)m && mouseY < (double)n; - } - public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, double scrollY) { - if (!this.canScroll()) { - return false; - } else { - this.scrollOffs = this.menu.subtractInputFromScroll(this.scrollOffs, scrollY); - this.menu.scrollTo(this.scrollOffs); - return true; - } - } - public boolean mouseDragged(double mouseX, double mouseY, int button, double dragX, double dragY) { - if (this.scrolling) { - int i = this.topPos + 16; - int j = i + 160 + 2; - this.scrollOffs = ((float)mouseY - (float)i - 7.5F) / ((float)(j - i) - 15.0F); - this.scrollOffs = Mth.clamp(this.scrollOffs, 0.0F, 1.0F); - this.menu.scrollTo(this.scrollOffs); - return true; - } else { - return super.mouseDragged(mouseX, mouseY, button, dragX, dragY); - } - } - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (button == 0) { - if ( this.insideScrollbar(mouseX, mouseY)) { - this.scrolling = this.canScroll(); - return true; - } - } - this.hasClickedOutside = hasClickedOutside(mouseX, mouseY, this.leftPos, this.topPos, button); - return super.mouseClicked(mouseX, mouseY, button); - } - - @Override - public boolean mouseReleased(double mouseX, double mouseY, int button) { - if (button == 0) { - this.scrolling = false; - } - - return super.mouseReleased(mouseX, mouseY, button); - } @Override protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) { - guiGraphics.drawString(this.font, "Item selection", this.titleLabelX, this.titleLabelY, 4210752, false); + return; } @Override @@ -241,62 +56,35 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int left = this.leftPos; int top = this.topPos; - guiGraphics.blit(TextureLocation.ALL_ITEMS, left, top, 0, 0, this.imageWidth, this.imageHeight); - + guiGraphics.fillGradient(left, top, this.imageWidth, this.imageHeight, -1878719232, -1070583712); + guiGraphics.drawCenteredString(this.font, "Select block",this.width / 2, 40,16777215); + //guiGraphics.blit(TextureLocation.ALL_ITEMS, left, top, 0, 0, this.imageWidth, this.imageHeight); +/* int scrollLeft = left + 154; int l = scrollLeft + 17; int n = l + 160 + 2; int scrollTop = top + 17 + (int)((float)(n - l - 17) * this.scrollOffs); - guiGraphics.blit(TextureLocation.ALL_ITEMS, scrollLeft, scrollTop, 0, 208, 16, 16); - } - - @Override - public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { - super.render(guiGraphics, mouseX, mouseY, partialTick); - - this.renderTooltip(guiGraphics, mouseX, mouseY); + guiGraphics.blit(TextureLocation.ALL_ITEMS, scrollLeft, scrollTop, 0, 208, 16, 16);*/ } - @Environment(EnvType.CLIENT) - private static class CustomCreativeSlot extends Slot { - public CustomCreativeSlot(Container container, int slot, int x, int y) { - super(container, slot, x, y); - } - - public boolean mayPickup(Player player) { - ItemStack itemStack = this.getItem(); - if (super.mayPickup(player) && !itemStack.isEmpty()) { - return itemStack.isItemEnabled(player.level().enabledFeatures()) && !itemStack.has(DataComponents.CREATIVE_SLOT_LOCK); - } else { - return itemStack.isEmpty(); - } - } - + public void renderBackground(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { + this.renderBg(guiGraphics, partialTick, mouseX, mouseY); } @Override - protected void containerTick() { - super.containerTick(); - - if (!CandyTweak.OLD_CREATIVE_INVENTORY.get()) - this.minecraft.setScreen(new CreativeModeInventoryScreen( this.minecraft.player, minecraft.level.enabledFeatures(), false)); + protected void slotClicked(Slot slot, int slotId, int mouseButton, ClickType type) { + if (slot != null && type == ClickType.PICKUP) { + this.minecraft.player.setItemInHand(InteractionHand.MAIN_HAND,slot.getItem()); + this.minecraft.player.inventoryMenu.broadcastChanges(); + this.onClose(); + } } public static class ClassicItemPickerMenu extends CreativeModeInventoryScreen.ItemPickerMenu { - - Player localPlayer; Minecraft minecraft; + Player localPlayer; public float currentScroll = 0.0f; - - protected int calculateItemRowCount() { - return Mth.positiveCeilDiv(this.items.size(), NUM_COLS) - NUM_ROWS; - } - - protected float subtractInputFromScroll(float scrollOffs, double input) { - return Mth.clamp(scrollOffs - (float)(input / (double)this.calculateItemRowCount()), 0.0F, 1.0F); - } - public ClassicItemPickerMenu(Player player) { super(player); this.localPlayer = player; @@ -305,31 +93,18 @@ public ClassicItemPickerMenu(Player player) { Inventory inventory = player.getInventory(); int i; - for(i = 0; i < NUM_ROWS; ++i) { - for(int j = 0; j < NUM_COLS; ++j) { - this.addSlot(new ClassicCreativeModeInventoryScreen.CustomCreativeSlot(ClassicCreativeModeInventoryScreen.CONTAINER, i * 8 + j, 8 + j * 18, 18 + i * 18)); + for (i = 0; i < NUM_ROWS; ++i) { + for (int j = 0; j < NUM_COLS; ++j) { + this.addSlot(new ClassicCreativeModeInventoryScreen.CustomCreativeSlot(ClassicCreativeModeInventoryScreen.CONTAINER, i * 9 + j, 14 + j * 24, 27 + i * 24)); } } - - for(i = 0; i < 9; ++i) { - this.addSlot(new Slot(inventory, i, 8 + i * 18, 184)); - } - this.scrollTo(0.0F); } + public void refreshItems() { this.items.clear(); - this.items.addAll(ClassicCreativeModeItemHelper.GetItems()); - } - - public boolean canTakeItemForPickAll(ItemStack stack, Slot slot) { - return slot.container != ClassicCreativeModeInventoryScreen.CONTAINER; + this.items.addAll(OldCreativeModeItemHelper.GetClassicItems()); } - - public boolean canDragTo(Slot slot) { - return slot.container != ClassicCreativeModeInventoryScreen.CONTAINER; - } - @Override public void scrollTo(float pos) { int i = this.getRowIndexForScroll(pos); @@ -346,4 +121,20 @@ public void scrollTo(float pos) { } } } + @Environment(EnvType.CLIENT) + private static class CustomCreativeSlot extends Slot { + public CustomCreativeSlot(Container container, int slot, int x, int y) { + super(container, slot, x, y); + } + + public boolean mayPickup(Player player) { + ItemStack itemStack = this.getItem(); + if (super.mayPickup(player) && !itemStack.isEmpty()) { + return itemStack.isItemEnabled(player.level().enabledFeatures()) && !itemStack.has(DataComponents.CREATIVE_SLOT_LOCK); + } else { + return itemStack.isEmpty(); + } + } + + } } diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/OldCreativeModeInventoryScreen.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/OldCreativeModeInventoryScreen.java new file mode 100644 index 000000000..3d3cf672a --- /dev/null +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/OldCreativeModeInventoryScreen.java @@ -0,0 +1,331 @@ +package mod.adrenix.nostalgic.helper.candy.screen.inventory; + +import mod.adrenix.nostalgic.tweak.config.CandyTweak; +import mod.adrenix.nostalgic.tweak.enums.OldCreativeInventory; +import mod.adrenix.nostalgic.util.common.asset.TextureLocation; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.inventory.*; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.component.DataComponents; +import net.minecraft.network.chat.CommonComponents; +import net.minecraft.util.Mth; +import net.minecraft.world.Container; +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.ClickType; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.*; +import org.jetbrains.annotations.Nullable; + + +@Environment(EnvType.CLIENT) +public class OldCreativeModeInventoryScreen extends EffectRenderingInventoryScreen { + private static final int NUM_ROWS = 9; + private static final int NUM_COLS = 8; + private static final int CONTAINER_SIZE = 72; + static final SimpleContainer CONTAINER = new SimpleContainer(CONTAINER_SIZE); + private CreativeInventoryListener listener; + + public OldCreativeModeInventoryScreen(LocalPlayer localPlayer) { + super(new OldCreativeModeInventoryScreen.OldItemPickerMenu(localPlayer), localPlayer.getInventory(), CommonComponents.EMPTY); + localPlayer.containerMenu = this.menu; + this.menu.minecraft = this.minecraft; + this.imageHeight = 208; + this.imageWidth = 176; + this.leftPos = (this.width - this.imageWidth) / 2; + this.topPos = (this.height - this.imageHeight) / 2; + this.menu.refreshItems(); + } + + @Override + protected void init() { + super.init(); + + this.minecraft.player.inventoryMenu.removeSlotListener(this.listener); + this.listener = new CreativeInventoryListener(this.minecraft); + this.minecraft.player.inventoryMenu.addSlotListener(this.listener); + } + + private boolean hasClickedOutside; + @Override + protected void slotClicked(@Nullable Slot slot, int slotId, int mouseButton, ClickType type) { + boolean bl = type == ClickType.QUICK_MOVE; + type = slotId == -999 && type == ClickType.PICKUP ? ClickType.THROW : type; + if (slot != null && !slot.mayPickup(this.minecraft.player)) { + return; + } + int j; + ItemStack itemStack; + ItemStack itemStack2; + if (!this.menu.getCarried().isEmpty() && this.hasClickedOutside) { + if (mouseButton == 0) { + this.minecraft.player.drop(((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried(), true); + this.minecraft.gameMode.handleCreativeModeItemDrop(((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried()); + this.menu.setCarried(ItemStack.EMPTY); + } + + if (mouseButton == 1) { + itemStack = ((CreativeModeInventoryScreen.ItemPickerMenu)this.menu).getCarried().split(1); + this.minecraft.player.drop(itemStack, true); + this.minecraft.gameMode.handleCreativeModeItemDrop(itemStack); + } + } else if (slot != null && slot.container == CONTAINER) { + itemStack = ((CreativeModeInventoryScreen.ItemPickerMenu) this.menu).getCarried(); + itemStack2 = slot.getItem(); + if (type == ClickType.SWAP) { + if (!itemStack2.isEmpty()) { + this.minecraft.player.getInventory().setItem(mouseButton, itemStack2.copyWithCount(itemStack2.getMaxStackSize())); + this.minecraft.player.inventoryMenu.broadcastChanges(); + } + + return; + } + + ItemStack itemStack3; + if (type == ClickType.CLONE) { + if (this.menu.getCarried().isEmpty() && slot.hasItem()) { + itemStack3 = slot.getItem(); + this.menu.setCarried(itemStack3.copyWithCount(itemStack3.getMaxStackSize())); + } + + return; + } + + if (type == ClickType.THROW) { + if (!itemStack2.isEmpty()) { + itemStack3 = itemStack2.copyWithCount(mouseButton == 0 ? 1 : itemStack2.getMaxStackSize()); + this.minecraft.player.drop(itemStack3, true); + this.minecraft.gameMode.handleCreativeModeItemDrop(itemStack3); + } + + return; + } + + if (!itemStack.isEmpty() && !itemStack2.isEmpty() && ItemStack.isSameItemSameComponents(itemStack, itemStack2)) { + if (mouseButton == 0) { + if (bl) { + itemStack.setCount(itemStack.getMaxStackSize()); + } else if (itemStack.getCount() < itemStack.getMaxStackSize()) { + itemStack.grow(1); + } + } else { + itemStack.shrink(1); + } + } else if (!itemStack2.isEmpty() && itemStack.isEmpty()) { + j = bl ? itemStack2.getMaxStackSize() : itemStack2.getCount(); + this.menu.setCarried(itemStack2.copyWithCount(j)); + } else if (mouseButton == 0) { + this.menu.setCarried(ItemStack.EMPTY); + } else if (!this.menu.getCarried().isEmpty()) { + this.menu.getCarried().shrink(1); + } + } else if (this.menu != null) { + var ff = CONTAINER_SIZE; + var ts = CONTAINER_SIZE - 9; + itemStack = slot == null ? ItemStack.EMPTY : this.menu.getSlot(slot.index).getItem(); + this.menu.clicked(slot == null ? slotId : slot.index, mouseButton, type, this.minecraft.player); + if (AbstractContainerMenu.getQuickcraftHeader(mouseButton) == 2) { + for(int k = 0; k < 9; ++k) { + this.minecraft.gameMode.handleCreativeModeItemAdd(this.menu.getSlot(CONTAINER_SIZE + k).getItem(), ts + k); + } + } else if (slot != null) { + itemStack2 = this.menu.getSlot(slot.index).getItem(); + this.minecraft.gameMode.handleCreativeModeItemAdd(itemStack2, slot.index - this.menu.slots.size() + 9 + ts); + j = ff + mouseButton; + if (type == ClickType.SWAP) { + this.minecraft.gameMode.handleCreativeModeItemAdd(itemStack, j - this.menu.slots.size() + 9 + ts); + } else if (type == ClickType.THROW && !itemStack.isEmpty()) { + ItemStack itemStack4 = itemStack.copyWithCount(mouseButton == 0 ? 1 : itemStack.getMaxStackSize()); + this.minecraft.player.drop(itemStack4, true); + this.minecraft.gameMode.handleCreativeModeItemDrop(itemStack4); + } + + this.minecraft.player.inventoryMenu.broadcastChanges(); + } + } + } + + protected boolean hasClickedOutside(double mouseX, double mouseY, int guiLeft, int guiTop, int mouseButton) { + return mouseX < (double)guiLeft || mouseY < (double)guiTop || mouseX >= (double)(guiLeft + this.imageWidth) || mouseY >= (double)(guiTop + this.imageHeight); + } + + private boolean scrolling; + private float scrollOffs; + + private boolean canScroll() { + return this.menu.canScroll(); + } + + protected boolean insideScrollbar(double mouseX, double mouseY) { + int i = this.leftPos; + int j = this.topPos; + int k = i + 155; + int l = j + 17; + int m = k + 14; + int n = l + 160 + 2; + return mouseX >= (double)k && mouseY >= (double)l && mouseX < (double)m && mouseY < (double)n; + } + public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, double scrollY) { + if (!this.canScroll()) { + return false; + } else { + this.scrollOffs = this.menu.subtractInputFromScroll(this.scrollOffs, scrollY); + this.menu.scrollTo(this.scrollOffs); + return true; + } + } + public boolean mouseDragged(double mouseX, double mouseY, int button, double dragX, double dragY) { + if (this.scrolling) { + int i = this.topPos + 16; + int j = i + 160 + 2; + this.scrollOffs = ((float)mouseY - (float)i - 7.5F) / ((float)(j - i) - 15.0F); + this.scrollOffs = Mth.clamp(this.scrollOffs, 0.0F, 1.0F); + this.menu.scrollTo(this.scrollOffs); + return true; + } else { + return super.mouseDragged(mouseX, mouseY, button, dragX, dragY); + } + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + if (button == 0) { + if ( this.insideScrollbar(mouseX, mouseY)) { + this.scrolling = this.canScroll(); + return true; + } + } + this.hasClickedOutside = hasClickedOutside(mouseX, mouseY, this.leftPos, this.topPos, button); + return super.mouseClicked(mouseX, mouseY, button); + } + + @Override + public boolean mouseReleased(double mouseX, double mouseY, int button) { + if (button == 0) { + this.scrolling = false; + } + + return super.mouseReleased(mouseX, mouseY, button); + } + @Override + protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, "Item selection", this.titleLabelX, this.titleLabelY, 4210752, false); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { + + int left = this.leftPos; + int top = this.topPos; + + guiGraphics.blit(TextureLocation.ALL_ITEMS, left, top, 0, 0, this.imageWidth, this.imageHeight); + + int scrollLeft = left + 154; + int l = scrollLeft + 17; + int n = l + 160 + 2; + int scrollTop = top + 17 + (int)((float)(n - l - 17) * this.scrollOffs); + + guiGraphics.blit(TextureLocation.ALL_ITEMS, scrollLeft, scrollTop, 0, 208, 16, 16); + } + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { + super.render(guiGraphics, mouseX, mouseY, partialTick); + + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Environment(EnvType.CLIENT) + private static class CustomCreativeSlot extends Slot { + public CustomCreativeSlot(Container container, int slot, int x, int y) { + super(container, slot, x, y); + } + + public boolean mayPickup(Player player) { + ItemStack itemStack = this.getItem(); + if (super.mayPickup(player) && !itemStack.isEmpty()) { + return itemStack.isItemEnabled(player.level().enabledFeatures()) && !itemStack.has(DataComponents.CREATIVE_SLOT_LOCK); + } else { + return itemStack.isEmpty(); + } + } + + } + + @Override + protected void containerTick() { + super.containerTick(); + + if (CandyTweak.OLD_CREATIVE_INVENTORY.get() != OldCreativeInventory.BETA) + this.minecraft.setScreen(new CreativeModeInventoryScreen( this.minecraft.player, minecraft.level.enabledFeatures(), false)); + } + + public static class OldItemPickerMenu extends CreativeModeInventoryScreen.ItemPickerMenu { + + Player localPlayer; + Minecraft minecraft; + public float currentScroll = 0.0f; + + protected int calculateItemRowCount() { + return Mth.positiveCeilDiv(this.items.size(), NUM_COLS) - NUM_ROWS; + } + + protected float subtractInputFromScroll(float scrollOffs, double input) { + return Mth.clamp(scrollOffs - (float)(input / (double)this.calculateItemRowCount()), 0.0F, 1.0F); + } + + public OldItemPickerMenu(Player player) { + super(player); + this.localPlayer = player; + this.slots.clear(); + refreshItems(); + Inventory inventory = player.getInventory(); + + int i; + for(i = 0; i < NUM_ROWS; ++i) { + for(int j = 0; j < NUM_COLS; ++j) { + this.addSlot(new OldCreativeModeInventoryScreen.CustomCreativeSlot(OldCreativeModeInventoryScreen.CONTAINER, i * 8 + j, 8 + j * 18, 18 + i * 18)); + } + } + + for(i = 0; i < 9; ++i) { + this.addSlot(new Slot(inventory, i, 8 + i * 18, 184)); + } + + this.scrollTo(0.0F); + } + public void refreshItems() { + this.items.clear(); + this.items.addAll(OldCreativeModeItemHelper.GetItems()); + } + + public boolean canTakeItemForPickAll(ItemStack stack, Slot slot) { + return slot.container != OldCreativeModeInventoryScreen.CONTAINER; + } + + public boolean canDragTo(Slot slot) { + return slot.container != OldCreativeModeInventoryScreen.CONTAINER; + } + + @Override + public void scrollTo(float pos) { + int i = this.getRowIndexForScroll(pos); + this.currentScroll = pos; + for(int j = 0; j < NUM_ROWS; ++j) { + for(int k = 0; k < NUM_COLS; ++k) { + int l = k + (j + i) * NUM_COLS; + if (l >= 0 && l < this.items.size()) { + OldCreativeModeInventoryScreen.CONTAINER.setItem(k + j * NUM_COLS, (ItemStack)this.items.get(l)); + } else { + OldCreativeModeInventoryScreen.CONTAINER.setItem(k + j * NUM_COLS, ItemStack.EMPTY); + } + } + } + } + } +} diff --git a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeItemHelper.java b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/OldCreativeModeItemHelper.java similarity index 88% rename from common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeItemHelper.java rename to common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/OldCreativeModeItemHelper.java index ad8831f87..3b4d18968 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/ClassicCreativeModeItemHelper.java +++ b/common/src/main/java/mod/adrenix/nostalgic/helper/candy/screen/inventory/OldCreativeModeItemHelper.java @@ -1,14 +1,13 @@ package mod.adrenix.nostalgic.helper.candy.screen.inventory; import mod.adrenix.nostalgic.tweak.config.CandyTweak; -import net.fabricmc.loader.impl.util.log.Log; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.*; import java.util.ArrayList; import java.util.Collection; -public class ClassicCreativeModeItemHelper { +public class OldCreativeModeItemHelper { public static Collection GetItems() { @@ -16,6 +15,67 @@ public static Collection GetItems() { return GetItemsFromVersion(ver); } + + public static Collection GetClassicItems() { + var items = new ArrayList(); + int ver = 99999999; + + if (ver >= VersionInt("p0.0")) items.add(Items.STONE); + if (ver >= VersionInt("p0.0")) items.add(Items.COBBLESTONE); + if (ver >= VersionInt("p0.0")) items.add(Items.BRICKS); + if (ver >= VersionInt("p0.0")) items.add(Items.DIRT); + if (ver >= VersionInt("p0.0")) items.add(Items.OAK_PLANKS); + if (ver >= VersionInt("p0.0")) items.add(Items.OAK_LOG); + if (ver >= VersionInt("p0.0")) items.add(Items.OAK_LEAVES); + if (ver >= VersionInt("p0.0")) items.add(Items.GLASS); + if (ver >= VersionInt("p0.0")) items.add(Items.SMOOTH_STONE_SLAB); + if (ver >= VersionInt("p0.0")) items.add(Items.MOSSY_COBBLESTONE); + if (ver >= VersionInt("p0.0")) items.add(Items.OAK_SAPLING); + if (ver >= VersionInt("p0.0")) items.add(Items.DANDELION); + if (ver >= VersionInt("p0.0")) items.add(Items.POPPY); + if (ver >= VersionInt("p0.0")) items.add(Items.BROWN_MUSHROOM); + if (ver >= VersionInt("p0.0")) items.add(Items.RED_MUSHROOM); + if (ver >= VersionInt("p0.0")) items.add(Items.SAND); + if (ver >= VersionInt("p0.0")) items.add(Items.GRAVEL); + if (ver >= VersionInt("p0.0")) items.add(Items.SPONGE); + + if (ver >= VersionInt("p0.0")) items.add(Items.RED_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.ORANGE_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.YELLOW_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.LIME_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.GREEN_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.CYAN_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.LIGHT_BLUE_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.BLUE_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.BLUE_WOOL); // dunno what to use here since this wool colour doesn't exist anymore + if (ver >= VersionInt("p0.0")) items.add(Items.PURPLE_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.MAGENTA_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.PINK_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.PINK_WOOL); // dunno what to use here since this wool colour doesn't exist anymore + //if (ver >= VersionInt("p0.0")) items.add(Items.BLACK_WOOL); // Black wool didn't exist + if (ver >= VersionInt("p0.0")) items.add(Items.GRAY_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.LIGHT_GRAY_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.WHITE_WOOL); + if (ver >= VersionInt("p0.0")) items.add(Items.COAL_ORE); + if (ver >= VersionInt("p0.0")) items.add(Items.IRON_ORE); + if (ver >= VersionInt("p0.0")) items.add(Items.GOLD_ORE); + if (ver >= VersionInt("p0.0")) items.add(Items.IRON_BLOCK); + if (ver >= VersionInt("p0.0")) items.add(Items.GOLD_BLOCK); + if (ver >= VersionInt("p0.0")) items.add(Items.BOOKSHELF); + if (ver >= VersionInt("p0.0")) items.add(Items.TNT); + if (ver >= VersionInt("p0.0")) items.add(Items.OBSIDIAN); + + + var itemstacks = new ArrayList(); + + for (Item item : items) { + itemstacks.add(new ItemStack(item)); + } + + return itemstacks; + } + + // ABCDEFG // A = Release State: 0 (Pre-Classic), 1 (Classic/Indev), 2 (Alpha), 3 (Beta), 4 (Release). 4 by default (Release 1.2.5) // BC DE FG = Version: 01 02 05 by default (Release 1.2.5) diff --git a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java index cae58d404..015d68e4d 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java +++ b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/inventory_screen/CreativeModeInventoryScreenMixin.java @@ -1,37 +1,18 @@ package mod.adrenix.nostalgic.mixin.tweak.candy.inventory_screen; -import com.llamalad7.mixinextras.injector.ModifyReturnValue; import mod.adrenix.nostalgic.helper.candy.screen.inventory.ClassicCreativeModeInventoryScreen; -import mod.adrenix.nostalgic.helper.candy.screen.inventory.InventoryScreenHelper; +import mod.adrenix.nostalgic.helper.candy.screen.inventory.OldCreativeModeInventoryScreen; import mod.adrenix.nostalgic.tweak.config.CandyTweak; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import mod.adrenix.nostalgic.tweak.enums.OldCreativeInventory; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; -import net.minecraft.client.gui.screens.inventory.InventoryScreen; -import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent; -import net.minecraft.client.player.LocalPlayer; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.flag.FeatureFlagSet; -import net.minecraft.world.inventory.AbstractContainerMenu; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraft.world.item.*; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.CopperBulbBlock; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; // Menu test, might need to have it be its own thing? @Mixin(CreativeModeInventoryScreen.class) public abstract class CreativeModeInventoryScreenMixin extends AbstractContainerScreen { @@ -40,25 +21,17 @@ private CreativeModeInventoryScreenMixin(CreativeModeInventoryScreen.ItemPickerM super(menu, playerInventory, title); } - @Inject( - method = "", - at = @At("HEAD") - ) - public void nt_creative_inventory$OverrideInv(CallbackInfo callback) { - - if (CandyTweak.OLD_CREATIVE_INVENTORY.get()) - this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen(this.minecraft.player )); - } - - @Inject( method = "init", at = @At("HEAD") ) public void nt_creative_inventory$OverrideInit(CallbackInfo callback) { - if (CandyTweak.OLD_CREATIVE_INVENTORY.get()) - this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen(this.minecraft.player )); + if (CandyTweak.OLD_CREATIVE_INVENTORY.get() == OldCreativeInventory.BETA) + this.minecraft.setScreen(new OldCreativeModeInventoryScreen( this.minecraft.player )); + + if (CandyTweak.OLD_CREATIVE_INVENTORY.get() == OldCreativeInventory.CLASSIC) + this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen( this.minecraft.player )); } @Inject( @@ -66,8 +39,11 @@ private CreativeModeInventoryScreenMixin(CreativeModeInventoryScreen.ItemPickerM at = @At("HEAD") ) public void nt_creative_inventory$containerTick(CallbackInfo callback) { - if (CandyTweak.OLD_CREATIVE_INVENTORY.get()) - this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen(this.minecraft.player )); + if (CandyTweak.OLD_CREATIVE_INVENTORY.get() == OldCreativeInventory.BETA) + this.minecraft.setScreen(new OldCreativeModeInventoryScreen( this.minecraft.player )); + + if (CandyTweak.OLD_CREATIVE_INVENTORY.get() == OldCreativeInventory.CLASSIC) + this.minecraft.setScreen(new ClassicCreativeModeInventoryScreen( this.minecraft.player )); } diff --git a/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java b/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java index 353731245..f42f9682f 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java +++ b/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java @@ -182,7 +182,7 @@ public interface CandyTweak // Creative Inventory Screen TweakEnum OLD_CREATIVE_HOTBAR = TweakEnum.server(Hotbar.CLASSIC, CandyGroup.INTERFACE_INVENTORY_CREATIVE).ignoreNetworkCheck().whenDisabled(Hotbar.MODERN).build(); - TweakFlag OLD_CREATIVE_INVENTORY = TweakFlag.client(false, CandyGroup.INTERFACE_INVENTORY_CREATIVE).build(); + TweakEnum OLD_CREATIVE_INVENTORY = TweakEnum.client(OldCreativeInventory.MODERN, CandyGroup.INTERFACE_INVENTORY_CREATIVE).build(); TweakText OLD_CREATIVE_INVENTORY_VERSION = TweakText.client("r1.2.5", CandyGroup.INTERFACE_INVENTORY_CREATIVE).build(); TweakFlag OLD_CREATIVE_INVENTORY_ALWAYS_SHOW_MODERN_ITEMS = TweakFlag.client(true, CandyGroup.INTERFACE_INVENTORY_CREATIVE).build(); diff --git a/common/src/main/java/mod/adrenix/nostalgic/tweak/enums/OldCreativeInventory.java b/common/src/main/java/mod/adrenix/nostalgic/tweak/enums/OldCreativeInventory.java new file mode 100644 index 000000000..09119f796 --- /dev/null +++ b/common/src/main/java/mod/adrenix/nostalgic/tweak/enums/OldCreativeInventory.java @@ -0,0 +1,24 @@ +package mod.adrenix.nostalgic.tweak.enums; + +import mod.adrenix.nostalgic.util.common.lang.Translation; +import mod.adrenix.nostalgic.util.common.lang.Lang; + +public enum OldCreativeInventory implements EnumTweak +{ + CLASSIC(Lang.Enum.CLASSIC), + BETA(Generic.BETA.getTitle()), + MODERN(Generic.MODERN.getTitle()); + + private final Translation title; + + OldCreativeInventory(Translation title) + { + this.title = title; + } + + @Override + public Translation getTitle() + { + return this.title; + } +} From 03afbf812de8bf3edd7a1901d2a65ff067163ab5 Mon Sep 17 00:00:00 2001 From: Xenthio Date: Thu, 26 Sep 2024 12:44:19 +1000 Subject: [PATCH 9/9] Rename title in enum --- .../mod/adrenix/nostalgic/tweak/enums/OldCreativeInventory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/main/java/mod/adrenix/nostalgic/tweak/enums/OldCreativeInventory.java b/common/src/main/java/mod/adrenix/nostalgic/tweak/enums/OldCreativeInventory.java index 09119f796..ff357e168 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/tweak/enums/OldCreativeInventory.java +++ b/common/src/main/java/mod/adrenix/nostalgic/tweak/enums/OldCreativeInventory.java @@ -6,7 +6,7 @@ public enum OldCreativeInventory implements EnumTweak { CLASSIC(Lang.Enum.CLASSIC), - BETA(Generic.BETA.getTitle()), + BETA(Lang.literal("§6b1.8§r - §61.2.5")), MODERN(Generic.MODERN.getTitle()); private final Translation title;