1
0
Fork 0

improve container gui

This commit is contained in:
Sen 2025-09-07 20:12:05 +02:00
parent 581a6215ff
commit fe4a8fa6a5
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
4 changed files with 54 additions and 36 deletions

View file

@ -566,7 +566,7 @@ public class Client implements IThreadListener {
public LocalPos pointedLiquid; public LocalPos pointedLiquid;
public DisplayMode vidMode; public DisplayMode vidMode;
public String dimensionName; public String dimensionName;
public ItemCategory itemSelection = ItemCategory.USEABLE; public ItemCategory itemSelection = null;
private ChunkClient emptyChunk; private ChunkClient emptyChunk;
private ChunkClient outsideChunk; private ChunkClient outsideChunk;
@ -828,7 +828,7 @@ public class Client implements IThreadListener {
this.player = null; this.player = null;
this.serverInfo = null; this.serverInfo = null;
Arrays.fill(this.lastSelection, 0); Arrays.fill(this.lastSelection, 0);
this.itemSelection = ItemCategory.USEABLE; this.itemSelection = null;
this.lastTickTime = -1; this.lastTickTime = -1;
this.selectedCharacter = -1; this.selectedCharacter = -1;
this.playerList.clear(); this.playerList.clear();
@ -960,6 +960,10 @@ public class Client implements IThreadListener {
{ {
this.category(this.shift() ? -1 : 1); this.category(this.shift() ? -1 : 1);
} }
if (Bind.DESELECT.isPressed() && this.viewEntity == this.player)
{
this.deselect();
}
boolean hadZoom = this.zooming; boolean hadZoom = this.zooming;
this.zooming = Bind.ZOOM.isDown() || this.viewEntity != this.player; this.zooming = Bind.ZOOM.isDown() || this.viewEntity != this.player;
@ -970,7 +974,7 @@ public class Client implements IThreadListener {
if(this.viewEntity == this.player) { if(this.viewEntity == this.player) {
for (int l = 0; l < this.keyBindsHotbar.length && l < this.player.getHotbarSize(); ++l) for (int l = 0; l < this.keyBindsHotbar.length && l < this.player.getHotbarSize(); ++l)
{ {
if (this.keyBindsHotbar[l].isPressed()) if (this.keyBindsHotbar[l].isPressed() && this.itemSelection != null)
{ {
int n = 0; int n = 0;
for(int z = 0; z < this.player.getHotbarSize(); z++) { for(int z = 0; z < this.player.getHotbarSize(); z++) {
@ -1112,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.displayTick(ExtMath.floord(this.player.posX), ExtMath.floord(this.player.posY), ExtMath.floord(this.player.posZ));
this.effectRenderer.update(); this.effectRenderer.update();
if(this.player != null && (this.player.getHeldItem() == null || this.player.getHeldItem().getItem().getCategory() != this.itemSelection)) if(this.player != null && this.itemSelection != null && (this.player.getHeldItem() == null || this.player.getHeldItem().getItem().getCategory() != this.itemSelection))
this.select(1); this.select(1);
} }
else if (this.connection != null) else if (this.connection != null)
@ -1178,7 +1182,7 @@ public class Client implements IThreadListener {
final int selected = this.world != null && this.player != null && this.viewEntity == this.player ? this.player.getSelectedIndex() : -1; final int selected = this.world != null && this.player != null && this.viewEntity == this.player ? this.player.getSelectedIndex() : -1;
final int size = this.world != null && this.player != null && this.viewEntity == this.player ? this.player.getHotbarSize() : 1; final int size = this.world != null && this.player != null && this.viewEntity == this.player ? this.player.getHotbarSize() : 1;
int total = 1; int total = 1;
if(this.world != null && this.player != null && this.viewEntity == this.player) { if(this.world != null && this.player != null && this.viewEntity == this.player && this.itemSelection != null) {
total = 0; total = 0;
for(int z = 0; z < this.player.getHotbarSize(); z++) { for(int z = 0; z < this.player.getHotbarSize(); z++) {
if(this.player.getStackInSlot(z) != null && this.player.getStackInSlot(z).getItem().getCategory() == this.itemSelection) if(this.player.getStackInSlot(z) != null && this.player.getStackInSlot(z).getItem().getCategory() == this.itemSelection)
@ -1211,14 +1215,16 @@ public class Client implements IThreadListener {
} }
} }
int x = xoff; if(this.itemSelection != null) {
for(int n = 0; n < size; n++) { int x = xoff;
if(this.player.getStackInSlot(n) == null || this.player.getStackInSlot(n).getItem().getCategory() != this.itemSelection) for(int n = 0; n < size; n++) {
continue; if(this.player.getStackInSlot(n) == null || this.player.getStackInSlot(n).getItem().getCategory() != this.itemSelection)
if(selected == n) continue;
Drawing.drawRect(x - 4, by - 4, 40, 40, 0xffffffff); if(selected == n)
InventoryButton.drawButton(this, x - 2, by - 2, 36, 36); Drawing.drawRect(x - 4, by - 4, 40, 40, 0xffffffff);
x += width >= 40 || selected == n || selected == n + 1 ? 40 : width; InventoryButton.drawButton(this, x - 2, by - 2, 36, 36);
x += width >= 40 || selected == n || selected == n + 1 ? 40 : width;
}
} }
ItemStack itemstack = this.player.getHeldItem(); ItemStack itemstack = this.player.getHeldItem();
@ -1371,21 +1377,23 @@ public class Client implements IThreadListener {
GlState.color(1.0F, 1.0F, 1.0F, 1.0F); GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
ItemRenderer.enableGUIStandardItemLighting(); ItemRenderer.enableGUIStandardItemLighting();
int xPos = xoff; if(this.itemSelection != null) {
int cnt = 0; int xPos = xoff;
for(int index = 0; index < size; ++index) { int cnt = 0;
ItemStack itemstack = this.player.getStackInSlot(index); for(int index = 0; index < size; ++index) {
if(itemstack != null && itemstack.getItem().getCategory() == this.itemSelection) { ItemStack itemstack = this.player.getStackInSlot(index);
if(width < 40 && selected != index && selected != index + 1 && cnt != total - 1) { if(itemstack != null && itemstack.getItem().getCategory() == this.itemSelection) {
this.scissor(xPos, this.fbY - (by + 32), width - 2, 32); if(width < 40 && selected != index && selected != index + 1 && cnt != total - 1) {
GL15.glEnable(GL15.GL_SCISSOR_TEST); this.scissor(xPos, this.fbY - (by + 32), width - 2, 32);
GL15.glEnable(GL15.GL_SCISSOR_TEST);
}
GlState.enableDepth();
this.renderItem.renderItemAndEffectIntoGUI(itemstack, xPos, by);
if(width < 40 && selected != index && selected != index + 1 && cnt != total - 1)
GL15.glDisable(GL15.GL_SCISSOR_TEST);
xPos += width >= 40 || selected == index || selected == index + 1 ? 40 : width;
++cnt;
} }
GlState.enableDepth();
this.renderItem.renderItemAndEffectIntoGUI(itemstack, xPos, by);
if(width < 40 && selected != index && selected != index + 1 && cnt != total - 1)
GL15.glDisable(GL15.GL_SCISSOR_TEST);
xPos += width >= 40 || selected == index || selected == index + 1 ? 40 : width;
++cnt;
} }
} }
@ -1410,7 +1418,7 @@ public class Client implements IThreadListener {
GlState.disableCull(); GlState.disableCull();
GlState.enableBlend(); GlState.enableBlend();
GlState.disableDepth(); GlState.disableDepth();
if(this.world != null && this.open == null && this.player != null && this.viewEntity == this.player) { if(this.world != null && this.open == null && this.player != null && this.viewEntity == this.player && this.itemSelection != null) {
int xPos = xoff; int xPos = xoff;
for(int index = 0; index < size; ++index) { for(int index = 0; index < size; ++index) {
ItemStack itemstack = this.player.getStackInSlot(index); ItemStack itemstack = this.player.getStackInSlot(index);
@ -1536,17 +1544,15 @@ public class Client implements IThreadListener {
public void scroll(int dir) { public void scroll(int dir) {
if(this.zooming) if(this.zooming)
this.zoomLevel = ExtMath.clampf(this.zoomLevel + (dir < 0 ? -0.25f : 0.25f), this.viewEntity != this.player ? 1.0f : 2.0f, 16.0f); this.zoomLevel = ExtMath.clampf(this.zoomLevel + (dir < 0 ? -0.25f : 0.25f), this.viewEntity != this.player ? 1.0f : 2.0f, 16.0f);
else if(this.player != null) else if(this.player != null && this.itemSelection != null)
this.select(-dir); this.select(-dir);
} }
private void select(int dir) { private void select(int dir) {
int last = this.player.getSelectedIndex(); int last = this.player.getSelectedIndex();
if(last < 0)
this.player.setSelectedIndex(last = 0);
int n = 0; int n = 0;
if(last < 0) {
last = 0;
this.player.setSelectedIndex(0);
}
boolean any = false; boolean any = false;
do { do {
this.player.setSelectedIndex(this.player.getSelectedIndex() + dir); this.player.setSelectedIndex(this.player.getSelectedIndex() + dir);
@ -1566,6 +1572,8 @@ public class Client implements IThreadListener {
private void category(int dir) { private void category(int dir) {
ItemCategory last = this.itemSelection; ItemCategory last = this.itemSelection;
if(last == null)
this.itemSelection = last = ItemCategory.USEABLE;
this.lastSelection[last.ordinal()] = this.player.getSelectedIndex() >= 0 ? this.player.getSelectedIndex() : 0; this.lastSelection[last.ordinal()] = this.player.getSelectedIndex() >= 0 ? this.player.getSelectedIndex() : 0;
int total; int total;
int n = 0; int n = 0;
@ -1590,6 +1598,13 @@ public class Client implements IThreadListener {
this.player.setSelectedIndex(-1); this.player.setSelectedIndex(-1);
} }
} }
private void deselect() {
if(this.itemSelection != null)
this.lastSelection[this.itemSelection.ordinal()] = this.player.getSelectedIndex() >= 0 ? this.player.getSelectedIndex() : 0;
this.itemSelection = null;
this.player.setSelectedIndex(-1);
}
public void moveCamera(float x, float y) { public void moveCamera(float x, float y) {
this.deltaX += x; this.deltaX += x;

View file

@ -577,6 +577,10 @@ public class ClientPlayer implements IClientPlayer
this.gm.itemSelection = this.gm.player.getHeldItem().getItem().getCategory(); this.gm.itemSelection = this.gm.player.getHeldItem().getItem().getCategory();
this.gm.lastSelection[this.gm.itemSelection.ordinal()] = this.gm.player.getSelectedIndex(); this.gm.lastSelection[this.gm.itemSelection.ordinal()] = this.gm.player.getSelectedIndex();
} }
else {
this.gm.itemSelection = null;
this.gm.player.setSelectedIndex(-1);
}
} }
} }

View file

@ -18,6 +18,7 @@ public enum Bind implements Identifyable, CVar {
FAST(BindCategory.MOVEMENT, "fast", "Schneller", Keysym.LEFT_SHIFT), FAST(BindCategory.MOVEMENT, "fast", "Schneller", Keysym.LEFT_SHIFT),
INVENTORY(BindCategory.INTERACTION, "inventory", "Inventar", Keysym.E), INVENTORY(BindCategory.INTERACTION, "inventory", "Inventar", Keysym.E),
ITEMMODE(BindCategory.INTERACTION, "itemmode", "Kategorie", Keysym.TAB), ITEMMODE(BindCategory.INTERACTION, "itemmode", "Kategorie", Keysym.TAB),
DESELECT(BindCategory.INTERACTION, "deselect", "Abwählen", Keysym.F),
PRIMARY(BindCategory.INTERACTION, "primary", "Primäre Aktion", Button.MOUSE_LEFT), PRIMARY(BindCategory.INTERACTION, "primary", "Primäre Aktion", Button.MOUSE_LEFT),
SECONDARY(BindCategory.INTERACTION, "secondary", "Sekundäre Aktion", Button.MOUSE_RIGHT), SECONDARY(BindCategory.INTERACTION, "secondary", "Sekundäre Aktion", Button.MOUSE_RIGHT),
TERTIARY(BindCategory.INTERACTION, "tertiary", "Tertiäre Aktion", Button.MOUSE_MIDDLE), TERTIARY(BindCategory.INTERACTION, "tertiary", "Tertiäre Aktion", Button.MOUSE_MIDDLE),

View file

@ -3319,7 +3319,7 @@ public abstract class EntityNPC extends EntityLiving implements IInventory
if(stack != null) if(stack != null)
this.setInventorySlotContents(z, stack); this.setInventorySlotContents(z, stack);
} }
this.setSelectedIndex(this.isPlayer() || this.dummy ? tag.getInt("selected") : 0); this.setSelectedIndex(this.isPlayer() || this.dummy ? -1 : 0);
for(Equipment slot : Equipment.ARMOR) { for(Equipment slot : Equipment.ARMOR) {
this.setArmor(slot, ItemStack.readFromTag(tag.getObject(slot.getName()))); this.setArmor(slot, ItemStack.readFromTag(tag.getObject(slot.getName())));
} }
@ -3446,8 +3446,6 @@ public abstract class EntityNPC extends EntityLiving implements IInventory
} }
} }
tag.setList("items", list); tag.setList("items", list);
if(this.isPlayer() || this.dummy)
tag.setInt("selected", this.getSelectedIndex());
for(Equipment slot : Equipment.ARMOR) { for(Equipment slot : Equipment.ARMOR) {
TagObject item = new TagObject(); TagObject item = new TagObject();
if(this.getArmor(slot) != null) if(this.getArmor(slot) != null)