1
0
Fork 0

improve item categories

This commit is contained in:
Sen 2025-09-05 20:20:07 +02:00
parent 83dca68f11
commit f123a599a2
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
43 changed files with 190 additions and 95 deletions

View file

@ -16,6 +16,7 @@ import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.text.SimpleDateFormat;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
@ -134,6 +135,7 @@ import common.init.SoundEvent;
import common.item.Item;
import common.item.ItemControl;
import common.item.ItemStack;
import common.item.ItemCategory;
import common.item.material.ItemBucket;
import common.log.Log;
import common.log.LogLevel;
@ -450,6 +452,7 @@ public class Client implements IThreadListener {
private final List<ChunkClient> chunkListing = Lists.<ChunkClient>newArrayList();
private final Set<Long> emptyChunkListing = Sets.<Long>newHashSet();
private final Set<Long> nextEmptyChunkListing = Sets.<Long>newHashSet();
private final int[] lastSelection = new int[ItemCategory.values().length];
private boolean primary;
private boolean secondary;
@ -468,7 +471,6 @@ public class Client implements IThreadListener {
private boolean saving;
private boolean drawFps;
private boolean drawDebug;
private boolean placeMode;
public boolean jump;
public boolean sneak;
public boolean debugCamEnable;
@ -573,6 +575,7 @@ public class Client implements IThreadListener {
public String dimensionName;
private ChunkClient emptyChunk;
private ChunkClient outsideChunk;
private ItemCategory itemSelection = ItemCategory.USEABLE;
private List<Entity> entities;
private List<Entity> unloaded;
@ -836,6 +839,8 @@ public class Client implements IThreadListener {
this.resetWorld();
this.player = null;
this.serverInfo = null;
Arrays.fill(this.lastSelection, 0);
this.itemSelection = ItemCategory.USEABLE;
this.lastTickTime = -1;
this.selectedCharacter = -1;
this.playerList.clear();
@ -965,7 +970,7 @@ public class Client implements IThreadListener {
if (Bind.ITEMMODE.isPressed() && this.viewEntity == this.player)
{
this.placeMode ^= true;
this.category(this.shift() ? -1 : 1);
}
boolean hadZoom = this.zooming;
@ -979,9 +984,18 @@ public class Client implements IThreadListener {
{
if (this.keyBindsHotbar[l].isPressed())
{
if(this.player.getSelectedIndex() != l)
this.controller.resetUseCooldown();
this.player.setSelectedIndex(l);
int n = 0;
for(int z = 0; z < this.player.getHotbarSize(); z++) {
if(this.player.getStackInSlot(z) == null || this.player.getStackInSlot(z).getItem().getCategory() != this.itemSelection)
continue;
if(l == n) {
if(this.player.getSelectedIndex() != z)
this.controller.resetUseCooldown();
this.player.setSelectedIndex(z);
break;
}
++n;
}
}
}
@ -1102,7 +1116,7 @@ public class Client implements IThreadListener {
this.displayTick(ExtMath.floord(this.player.posX), ExtMath.floord(this.player.posY), ExtMath.floord(this.player.posZ));
}
this.effectRenderer.update();
if(this.player != null && (this.player.getHeldItem() == null || !this.player.getHeldItem().getItem().canBeHeld() || (this.player.getHeldItem().getItem().getBlock() != null) != this.placeMode))
if(this.player != null && (this.player.getHeldItem() == null || this.player.getHeldItem().getItem().getCategory() != this.itemSelection))
this.select(1);
}
else if (this.connection != null)
@ -1172,7 +1186,7 @@ public class Client implements IThreadListener {
if(this.world != null && this.player != null && this.viewEntity == this.player) {
total = 0;
for(int z = 0; z < this.player.getHotbarSize(); z++) {
if(this.player.getStackInSlot(z) != null && this.player.getStackInSlot(z).getItem().canBeHeld() && (this.player.getStackInSlot(z).getItem().getBlock() != null) == this.placeMode)
if(this.player.getStackInSlot(z) != null && this.player.getStackInSlot(z).getItem().getCategory() == this.itemSelection)
++total;
}
if(total == 0)
@ -1204,7 +1218,7 @@ public class Client implements IThreadListener {
int x = xoff * scale;
for(int n = 0; n < size; n++) {
if(this.player.getStackInSlot(n) == null || !this.player.getStackInSlot(n).getItem().canBeHeld() || (this.player.getStackInSlot(n).getItem().getBlock() != null) != this.placeMode)
if(this.player.getStackInSlot(n) == null || this.player.getStackInSlot(n).getItem().getCategory() != this.itemSelection)
continue;
if(selected == n)
Drawing.drawRect(x - scale * 2, by - scale * 2, 20 * scale, 20 * scale, 0xffffffff);
@ -1213,7 +1227,7 @@ public class Client implements IThreadListener {
}
ItemStack itemstack = this.player.getHeldItem();
String current = itemstack != null ? itemstack.getItem().getHotbarText(this.player, itemstack) : "";
String current = itemstack != null && itemstack.getItem().getCategory() != null ? itemstack.getItem().getHotbarText(this.player, itemstack) : "";
if(!current.isEmpty())
Drawing.drawTextUpward(current, this.fbX / 2, this.fbY - 60, 0xffffffff);
}
@ -1370,7 +1384,7 @@ public class Client implements IThreadListener {
int cnt = 0;
for(int index = 0; index < size; ++index) {
ItemStack itemstack = this.player.getStackInSlot(index);
if(itemstack != null && itemstack.getItem().canBeHeld() && (itemstack.getItem().getBlock() != null) == this.placeMode) {
if(itemstack != null && itemstack.getItem().getCategory() == this.itemSelection) {
if(width < 20 && selected != index && selected != index + 1 && cnt != total - 1) {
this.scissor(xPos * scale, this.fbY - (by + 16 * scale), (width - 1) * scale, 16 * scale);
GL15.glEnable(GL15.GL_SCISSOR_TEST);
@ -1414,7 +1428,7 @@ public class Client implements IThreadListener {
int xPos = xoff * scale;
for(int index = 0; index < size; ++index) {
ItemStack itemstack = this.player.getStackInSlot(index);
if(itemstack != null && itemstack.getItem().canBeHeld() && (itemstack.getItem().getBlock() != null) == this.placeMode) {
if(itemstack != null && itemstack.getItem().getCategory() == this.itemSelection) {
if(width >= 17 || index == selected) {
GuiContainer.renderItemOverlay(itemstack,
xPos, by, null, index == this.player.getSelectedIndex() ? this.controller.getUseCooldown() : 0, this.controller.getUseCooldownMax(), scale);
@ -1541,6 +1555,7 @@ public class Client implements IThreadListener {
}
private void select(int dir) {
int last = this.player.getSelectedIndex();
int n = 0;
do {
this.player.setSelectedIndex(this.player.getSelectedIndex() + dir);
@ -1550,8 +1565,33 @@ public class Client implements IThreadListener {
this.player.setSelectedIndex(0);
++n;
}
while((this.player.getHeldItem() == null || !this.player.getHeldItem().getItem().canBeHeld() || (this.player.getHeldItem().getItem().getBlock() != null) != this.placeMode) && n < this.player.getHotbarSize());
this.controller.resetUseCooldown();
while((this.player.getHeldItem() == null || this.player.getHeldItem().getItem().getCategory() != this.itemSelection) && n < this.player.getHotbarSize());
if(last != this.player.getSelectedIndex())
this.controller.resetUseCooldown();
else
this.category(dir);
}
private void category(int dir) {
ItemCategory last = this.itemSelection;
this.lastSelection[last.ordinal()] = this.player.getSelectedIndex();
int total;
int n = 0;
do {
this.itemSelection = ItemCategory.values()[(ItemCategory.values().length + this.itemSelection.ordinal() + dir) % ItemCategory.values().length];
total = 0;
for(int z = 0; z < this.player.getHotbarSize(); z++) {
if(this.player.getStackInSlot(z) != null && this.player.getStackInSlot(z).getItem().getCategory() == this.itemSelection)
++total;
}
++n;
}
while(total <= 0 && n < ItemCategory.values().length);
if(this.itemSelection != last) {
if(this.player.getSelectedIndex() != this.lastSelection[this.itemSelection.ordinal()])
this.controller.resetUseCooldown();
this.player.setSelectedIndex(Math.min(this.lastSelection[this.itemSelection.ordinal()], this.player.getHotbarSize() - 1));
}
}
public void moveCamera(float x, float y) {

View file

@ -179,12 +179,13 @@ public abstract class GuiContainer extends Gui
if(stack.getRepairCost() > 0)
list.add("Reparaturkosten: " + stack.getRepairCost() + " Mana");
list.add(stack.getItem().getMaxAmount() == 1 ? "Nicht stapelbar" : "Stapelbar");
if(stack.getItem().getMaxAmount() != 1)
list.add("Stapelbar");
list.add("Gewicht: " + (stack.getSize() != 1 ? stack.getSize() * stack.getItem().getWeight() + "(" + stack.getSize() + "x " + stack.getItem().getWeight() + ")" : stack.getItem().getWeight()));
list.add("Gewicht: " + (stack.getSize() != 1 ? (stack.getSize() * stack.getItem().getWeight()) + " (" + stack.getSize() + "x " + stack.getItem().getWeight() + ")" : stack.getItem().getWeight()));
if(stack.getItem().canBeHeld())
list.add("Kann gehalten werden");
if(stack.getItem().getCategory() != null)
list.add("Kategorie: " + stack.getItem().getCategory());
list.add(Color.GRAY + ItemRegistry.getName(stack.getItem()));

View file

@ -380,7 +380,7 @@ public class ItemRenderer
}
else if(this.itemToRender == null || this.itemToRender.getItem().canRenderHand())
{
this.renderPlayerArm(clientplayer, f, f1);
this.renderPlayerArm(clientplayer, 0.0f, f1);
}
GL15.glPopMatrix();

View file

@ -17,7 +17,7 @@ public enum Bind implements Identifyable, CVar {
DOWN(BindCategory.MOVEMENT, "down", "Abwärts, Langsam", Keysym.LEFT_CONTROL),
FAST(BindCategory.MOVEMENT, "fast", "Schneller", Keysym.LEFT_SHIFT),
INVENTORY(BindCategory.INTERACTION, "inventory", "Inventar", Keysym.E),
ITEMMODE(BindCategory.INTERACTION, "itemmode", "Platziermodus", Keysym.TAB),
ITEMMODE(BindCategory.INTERACTION, "itemmode", "Kategorie", Keysym.TAB),
PRIMARY(BindCategory.INTERACTION, "primary", "Primäre Aktion", Button.MOUSE_LEFT),
SECONDARY(BindCategory.INTERACTION, "secondary", "Sekundäre Aktion", Button.MOUSE_RIGHT),
TERTIARY(BindCategory.INTERACTION, "tertiary", "Tertiäre Aktion", Button.MOUSE_MIDDLE),