Skip to content

Commit 8fe41ae

Browse files
committed
Merge branch '1.12.1' of github.com:thraaawn/CompactMachines into 1.12.1
2 parents 2a92dc2 + 8c53452 commit 8fe41ae

File tree

60 files changed

+4088
-827
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+4088
-827
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.dave.compactmachines3.command;
2+
3+
import net.minecraft.entity.player.EntityPlayer;
4+
5+
public class CommandDebug extends CommandMenu {
6+
@Override
7+
public void initEntries() {
8+
this.addSubcommand(new CommandDebugSetHugeNBT());
9+
}
10+
11+
@Override
12+
public boolean isAllowed(EntityPlayer player, boolean creative, boolean isOp) {
13+
return isOp;
14+
}
15+
16+
@Override
17+
public String getName() {
18+
return "debug";
19+
}
20+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package org.dave.compactmachines3.command;
2+
3+
import net.minecraft.command.CommandException;
4+
import net.minecraft.command.ICommandSender;
5+
import net.minecraft.entity.player.EntityPlayerMP;
6+
import net.minecraft.item.ItemStack;
7+
import net.minecraft.nbt.NBTTagCompound;
8+
import net.minecraft.server.MinecraftServer;
9+
import net.minecraft.util.EnumHand;
10+
11+
import java.util.Arrays;
12+
13+
public class CommandDebugSetHugeNBT extends CommandBaseExt {
14+
@Override
15+
public String getName() {
16+
return "setHugeNBT";
17+
}
18+
19+
@Override
20+
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
21+
if(!(sender.getCommandSenderEntity() instanceof EntityPlayerMP)) {
22+
return;
23+
}
24+
25+
EntityPlayerMP player = (EntityPlayerMP) sender.getCommandSenderEntity();
26+
ItemStack stack = player.getHeldItemMainhand().copy();
27+
NBTTagCompound newTag;
28+
if(stack.hasTagCompound()) {
29+
newTag = stack.getTagCompound();
30+
} else {
31+
newTag = new NBTTagCompound();
32+
}
33+
34+
// TODO: Make size configurable via arguments
35+
int fourmeg = 1024*1024*4;
36+
int limit = 2097152;
37+
byte[] hugeByteArray = new byte[fourmeg];
38+
Arrays.fill(hugeByteArray, (byte)255);
39+
newTag.setByteArray("debugHugeNBTTag", hugeByteArray);
40+
41+
stack.setTagCompound(newTag);
42+
43+
player.setHeldItem(EnumHand.MAIN_HAND, stack);
44+
}
45+
}

src/main/java/org/dave/compactmachines3/gui/GuiHandler.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import net.minecraftforge.fml.common.network.NetworkRegistry;
88
import org.dave.compactmachines3.CompactMachines3;
99
import org.dave.compactmachines3.gui.machine.GuiMachine;
10-
import org.dave.compactmachines3.gui.machine.GuiMachineAdmin;
1110
import org.dave.compactmachines3.gui.machine.GuiMachineContainer;
1211
import org.dave.compactmachines3.gui.psd.GuiPSDScreen;
1312
import org.dave.compactmachines3.gui.psd.Pages;
@@ -21,7 +20,7 @@ public static void init() {
2120
@Override
2221
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
2322
if(ID == GuiIds.MACHINE_VIEW.ordinal() || ID == GuiIds.MACHINE_ADMIN.ordinal()) {
24-
return new GuiMachineContainer(world, new BlockPos(x, y, z));
23+
return new GuiMachineContainer(world, new BlockPos(x, y, z), player);
2524
}
2625

2726
return null;
@@ -34,9 +33,9 @@ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int
3433
Pages.activePageOnClient = "welcome";
3534
return new GuiPSDScreen();
3635
} else if(ID == GuiIds.MACHINE_VIEW.ordinal()) {
37-
return new GuiMachine(world, new BlockPos(x, y, z));
36+
return new GuiMachine(new GuiMachineContainer(world, new BlockPos(x, y, z), player), false);
3837
} else if(ID == GuiIds.MACHINE_ADMIN.ordinal()) {
39-
return new GuiMachineAdmin(world, new BlockPos(x, y, z));
38+
return new GuiMachine(new GuiMachineContainer(world, new BlockPos(x, y, z), player), true);
4039
}
4140

4241
return null;
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.dave.compactmachines3.gui.framework;
2+
3+
import java.util.ArrayList;
4+
5+
public class CircularPointedArrayList<E> extends ArrayList<E> {
6+
int pointer = 0;
7+
8+
public E getPointedElement() {
9+
return this.get(pointer);
10+
}
11+
12+
public E next() {
13+
this.pointer++;
14+
if(pointer >= this.size()) {
15+
pointer = 0;
16+
}
17+
18+
return getPointedElement();
19+
}
20+
21+
public E prev() {
22+
this.pointer--;
23+
if(pointer <= 0) {
24+
pointer = this.size()-1;
25+
}
26+
27+
return getPointedElement();
28+
}
29+
30+
public void setPointerTo(E element) {
31+
int position = this.indexOf(element);
32+
if(position == -1) {
33+
pointer = 0;
34+
} else {
35+
pointer = position;
36+
}
37+
}
38+
}
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
package org.dave.compactmachines3.gui.framework;
2+
3+
import net.minecraft.client.gui.FontRenderer;
4+
import net.minecraft.client.gui.GuiScreen;
5+
import net.minecraft.client.renderer.GlStateManager;
6+
import net.minecraft.util.ResourceLocation;
7+
import net.minecraftforge.fml.client.config.GuiUtils;
8+
import org.dave.compactmachines3.CompactMachines3;
9+
import org.dave.compactmachines3.gui.framework.widgets.Widget;
10+
import org.dave.compactmachines3.gui.framework.widgets.WidgetPanel;
11+
12+
13+
public class GUI extends WidgetPanel {
14+
private static ResourceLocation tabIcons;
15+
16+
public boolean hasTabs = false;
17+
18+
public GUI(int x, int y, int width, int height) {
19+
this.setX(x);
20+
this.setY(y);
21+
this.setWidth(width);
22+
this.setHeight(height);
23+
24+
this.tabIcons = new ResourceLocation(CompactMachines3.MODID, "textures/gui/tabicons.png");
25+
}
26+
27+
public void drawGUI(GuiScreen screen) {
28+
this.setX((screen.width - this.width)/2);
29+
this.setY((screen.height - this.height)/2);
30+
31+
this.shiftAndDraw(screen);
32+
}
33+
34+
@Override
35+
public void drawBeforeShift(GuiScreen screen) {
36+
//screen.drawDefaultBackground();
37+
38+
super.drawBeforeShift(screen);
39+
}
40+
41+
@Override
42+
public void draw(GuiScreen screen) {
43+
drawWindow(screen);
44+
super.draw(screen);
45+
}
46+
47+
protected void drawWindow(GuiScreen screen) {
48+
GlStateManager.disableLighting();
49+
50+
GlStateManager.color(1f, 1f, 1f, 1f);
51+
screen.mc.renderEngine.bindTexture(tabIcons);
52+
53+
float offsetX = 0.0f;
54+
float offsetY = 0.0f;
55+
56+
GlStateManager.pushMatrix();
57+
GlStateManager.translate(offsetX, offsetY, 0);
58+
59+
int texOffsetY = 11;
60+
int texOffsetX = 64;
61+
62+
int width = this.width;
63+
int xOffset = 0;
64+
65+
if(hasTabs) {
66+
width -= 32;
67+
xOffset += 32;
68+
}
69+
70+
// Top Left corner
71+
screen.drawTexturedModalRect(xOffset, 0, texOffsetX, texOffsetY, 4, 4);
72+
73+
// Top right corner
74+
screen.drawTexturedModalRect(xOffset+width - 4, 0, texOffsetX + 4 + 64, texOffsetY, 4, 4);
75+
76+
// Bottom Left corner
77+
screen.drawTexturedModalRect(xOffset, this.height - 4, texOffsetX, texOffsetY + 4 + 64, 4, 4);
78+
79+
// Bottom Right corner
80+
screen.drawTexturedModalRect(xOffset+width - 4, this.height - 4, texOffsetX + 4 + 64, texOffsetY + 4 + 64, 4, 4);
81+
82+
// Top edge
83+
GUIHelper.drawStretchedTexture(xOffset+4, 0, width - 8, 4, texOffsetX + 4, texOffsetY, 64, 4);
84+
85+
// Bottom edge
86+
GUIHelper.drawStretchedTexture(xOffset+4, this.height - 4, width - 8, 4, texOffsetX + 4, texOffsetY + 4 + 64, 64, 4);
87+
88+
// Left edge
89+
GUIHelper.drawStretchedTexture(xOffset, 4, 4, this.height - 8, texOffsetX, texOffsetY+4, 4, 64);
90+
91+
// Right edge
92+
GUIHelper.drawStretchedTexture(xOffset+width - 4, 4, 4, this.height - 8, texOffsetX + 64 + 4, texOffsetY + 3, 4, 64);
93+
94+
GUIHelper.drawStretchedTexture(xOffset+4, 4, width - 8, this.height - 8, texOffsetX + 4, texOffsetY+4, 64, 64);
95+
96+
GlStateManager.popMatrix();
97+
}
98+
99+
public void drawTooltips(GuiScreen screen, int mouseX, int mouseY) {
100+
Widget hoveredWidget = getHoveredWidget(mouseX, mouseY);
101+
FontRenderer font = screen.mc.fontRenderer;
102+
103+
if(hoveredWidget != null && hoveredWidget.getTooltip() != null) {
104+
if(hoveredWidget.getTooltip().size() > 0) {
105+
GuiUtils.drawHoveringText(hoveredWidget.getTooltip(), mouseX, mouseY, width, height, 180, font);
106+
}/* else {
107+
List<String> tooltips = new ArrayList<>();
108+
tooltips.add(hoveredWidget.toString());
109+
GuiUtils.drawHoveringText(tooltips, mouseX, mouseY, width, height, 180, font);
110+
}*/
111+
}
112+
}
113+
114+
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package org.dave.compactmachines3.gui.framework;
2+
3+
import net.minecraft.client.gui.FontRenderer;
4+
import net.minecraft.client.gui.GuiScreen;
5+
import net.minecraft.client.renderer.BufferBuilder;
6+
import net.minecraft.client.renderer.GlStateManager;
7+
import net.minecraft.client.renderer.Tessellator;
8+
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
9+
import org.lwjgl.opengl.GL11;
10+
11+
public class GUIHelper {
12+
public static void drawSplitStringCentered(String str, GuiScreen screen, int x, int y, int width, int color) {
13+
FontRenderer renderer = screen.mc.fontRenderer;
14+
int yOffset = 0;
15+
for(String row : renderer.listFormattedStringToWidth(str, width)) {
16+
screen.drawCenteredString(renderer, row, x + width/2, y + yOffset, color);
17+
yOffset += renderer.FONT_HEIGHT;
18+
}
19+
}
20+
21+
public static void drawColoredRectangle(int x, int y, int width, int height, int argb) {
22+
int a = (argb >> 24) & 0xFF;
23+
int r = (argb >> 16) & 0xFF;
24+
int g = (argb >> 8) & 0xFF;
25+
int b = (argb & 0xFF);
26+
drawColoredRectangle(x, y, width, height, r, g, b, a);
27+
}
28+
29+
public static void drawColoredRectangle(int x, int y, int width, int height, int red, int green, int blue, int alpha) {
30+
double zLevel = 0.0f;
31+
32+
GlStateManager.disableTexture2D();
33+
GlStateManager.enableBlend();
34+
GlStateManager.disableAlpha();
35+
GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
36+
GlStateManager.shadeModel(GL11.GL_SMOOTH);
37+
38+
Tessellator tessellator = Tessellator.getInstance();
39+
BufferBuilder renderer = tessellator.getBuffer();
40+
renderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR);
41+
renderer.pos((x + 0), (y + 0), zLevel).color(red, green, blue, alpha).endVertex();
42+
renderer.pos((x + 0), (y + height), zLevel).color(red, green, blue, alpha).endVertex();
43+
renderer.pos((x + width), (y + height), zLevel).color(red, green, blue, alpha).endVertex();
44+
renderer.pos((x + width), (y + 0), zLevel).color(red, green, blue, alpha).endVertex();
45+
tessellator.draw();
46+
47+
GlStateManager.shadeModel(GL11.GL_FLAT);
48+
GlStateManager.disableBlend();
49+
GlStateManager.enableAlpha();
50+
GlStateManager.enableTexture2D();
51+
52+
}
53+
54+
public static void drawStretchedTexture(int x, int y, int width, int height, int textureX, int textureY, int textureWidth, int textureHeight) {
55+
float f = 0.00390625F;
56+
double zLevel = 0.0f;
57+
58+
Tessellator tessellator = Tessellator.getInstance();
59+
BufferBuilder bufferbuilder = tessellator.getBuffer();
60+
bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
61+
bufferbuilder
62+
.pos((double)(x + 0), (double)(y + height), zLevel)
63+
.tex((double)((float)(textureX + 0) * f), (double)((float)(textureY + textureHeight) * f))
64+
.endVertex();
65+
66+
bufferbuilder
67+
.pos((double)(x + width), (double)(y + height), zLevel)
68+
.tex((double)((float)(textureX + textureWidth) * f), (double)((float)(textureY + textureHeight) * f))
69+
.endVertex();
70+
71+
bufferbuilder
72+
.pos((double)(x + width), (double)(y + 0), zLevel)
73+
.tex((double)((float)(textureX + textureWidth) * f), (double)((float)(textureY + 0) * f))
74+
.endVertex();
75+
76+
bufferbuilder
77+
.pos((double)(x + 0), (double)(y + 0), zLevel)
78+
.tex((double)((float)(textureX + 0) * f), (double)((float)(textureY + 0) * f))
79+
.endVertex();
80+
81+
tessellator.draw();
82+
}
83+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.dave.compactmachines3.gui.framework;
2+
3+
public interface ISelectable {
4+
boolean isSelected();
5+
void setSelected(boolean state);
6+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.dave.compactmachines3.gui.framework;
2+
3+
public class SmartNumberFormatter {
4+
5+
public static String formatNumber(double value) {
6+
double decimalRange = 100;
7+
double normalRange = 100000;
8+
9+
if(value > -decimalRange && value < decimalRange) {
10+
if(value == Math.round(value)) {
11+
return String.format("%d", Math.round(value));
12+
}
13+
14+
return String.format("%.2f", value);
15+
}
16+
17+
if(value > -normalRange && value < normalRange) {
18+
return String.format("%.0f", value);
19+
}
20+
21+
return String.format("%.2e", value).toLowerCase();
22+
}
23+
}

0 commit comments

Comments
 (0)