Posted October 19, 20214 yr hi guys, i need help with tileentitys. i have a button in my tileentity and i want if i press the butten, a function should be called up in the in the tileentityclass. More precisely said the brewBlackout() class my Init in the Screen: @Override protected void init() { this.addButton(new ImageButton(this.guiLeft + 10, this.height + 30, 20, 18, 0, 0, 19, CONTINUE_BUTTON, (button) -> { ((ImageButton)button).setPosition(this.guiLeft + 20, this.height / 2 - 49); })); } and my tileentity package net.the_goldbeards.lootdebugs.tileentity; import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.*; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemStackHandler; import net.the_goldbeards.lootdebugs.init.ModBlocks; import net.the_goldbeards.lootdebugs.init.ModItems; import net.the_goldbeards.lootdebugs.init.ModTileEntities; import javax.annotation.Nonnull; public class PubTile extends TileEntity implements ITickableTileEntity { private final ItemStackHandler itemHandler = createHandler(); private final LazyOptional<IItemHandler> handler = LazyOptional.of(() -> itemHandler); public PubTile(TileEntityType<?> tileEntityTypeIn) { super(tileEntityTypeIn); } public PubTile() { this(ModTileEntities.PUB_TILE.get()); } @Override public void read(BlockState state, CompoundNBT nbt) { itemHandler.deserializeNBT(nbt.getCompound("pub")); super.read(state, nbt); } @Override public CompoundNBT write(CompoundNBT compound) { compound.put("pub", itemHandler.serializeNBT()); return super.write(compound); } private ItemStackHandler createHandler() { return new ItemStackHandler(6) { @Override protected void onContentsChanged(int slot) { brewBlackout(); markDirty(); } @Override public boolean isItemValid(int slot, @Nonnull ItemStack stack) { switch (slot) { case 0: return stack.getItem() == Items.WATER_BUCKET || stack.getItem() == Items.BUCKET;//Water Insert case 1: return stack.getItem() == Items.REDSTONE;//Barley Bulb case 2: return stack.getItem() == Items.WARPED_DOOR;// Yeast Cone case 3: return stack.getItem() == Items.MAGENTA_BANNER;//Malz Stars case 4: return stack.getItem() == ModItems.BARLEY_BULB.get();//Starch Nut case 5: return stack.getItem() == ModItems.MUG.get() || stack.getItem() == ModItems.OILY_OAF.get() || stack.getItem() == ModItems.SKULL_CRUSHER.get() || stack.getItem() == ModItems.OILY_OAF.get();//Output -> Mug or Mug with Liquid default: return false; } } @Override protected int getStackLimit(int slot, @Nonnull ItemStack stack) { if (slot == 5) { return 1; } if (slot == 0) { return 5; } else { return 64; } } @Nonnull @Override public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) { if (!isItemValid(slot, stack)) { return stack; } return super.insertItem(slot, stack, simulate); } }; } @Nonnull @Override public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap) { if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { return handler.cast(); } return super.getCapability(cap); } public void brewBlackout() { boolean isWaterInSlot = this.itemHandler.getStackInSlot(0).getCount() == 1 && this.itemHandler.getStackInSlot(0).getItem() == Items.WATER_BUCKET; boolean isMugInSlot = this.itemHandler.getStackInSlot(5).getCount() == 1 && this.itemHandler.getStackInSlot(5).getItem() == ModItems.MUG.get(); boolean isIngredients = this.itemHandler.getStackInSlot(4).getCount() >= 3 && this.itemHandler.getStackInSlot(4).getItem() == ModItems.BARLEY_BULB.get(); if (isMugInSlot && isIngredients && isWaterInSlot) { this.itemHandler.getStackInSlot(0).shrink(1); this.itemHandler.insertItem(0, new ItemStack(Items.BUCKET, 1), false); this.itemHandler.getStackInSlot(4).shrink(3); this.itemHandler.getStackInSlot(5).shrink(1); this.itemHandler.insertItem(5, new ItemStack(ModBlocks.OILY_OAF.get(), 1), false); } } /* private void craft() { Inventory inv = new Inventory(itemHandler.getSlots()); for (int i = 0; i < itemHandler.getSlots(); i++) { inv.setInventorySlotContents(i, itemHandler.getStackInSlot(i)); } Optional<PubRecipe> recipe = world.getRecipeManager() .getRecipe(ModRecipeTypes.PUB_RECIPE, inv, world); recipe.ifPresent(iRecipe -> { ItemStack output = iRecipe.getRecipeOutput(); craftTheItem(output); markDirty(); }); } private void craftTheItem(ItemStack output) { itemHandler.extractItem(0, 1,false); itemHandler.insertItem(0, new ItemStack(Items.BUCKET,1),false); } */ @Override public void tick() { // if(world.isRemote) // {return;} // craft(); } Edited October 19, 20214 yr by TheTrueSCP
October 19, 20214 yr Buttons are client side only, you must send a packet to the server saying "this button was pressed." Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
October 22, 20214 yr Author I've read it through the page several times now and still don't understand exactly how to do it
October 22, 20214 yr Author I just copied and adapted the examples on the forum page. Despite the documentation, I don't understand exactly how to tell the server that I have pressed the button and how the server can then call the function Edited October 22, 20214 yr by TheTrueSCP
October 22, 20214 yr https://mcforge.readthedocs.io/en/latest/networking/simpleimpl/#sending-to-the-server Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
October 23, 20214 yr Author If i try to write the SimpleChannel Object ive get errors like: Incompatible types. Found: 'net.minecraftforge.fml.network.simple.SimpleChannel', required: 'net.the_goldbeards.lootdebugs.Server.SimpleChannel'
October 23, 20214 yr Author private static final String PROTICOL_VERSION = "1"; public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel( new ResourceLocation("corruption","main") ,() -> PROTICOL_VERSION , PROTICOL_VERSION::equals , PROTICOL_VERSION::equals);
October 23, 20214 yr Author Unfortunately, that's the complete code, I don't know how to change the parameters in the example in the documentation
October 23, 20214 yr Author In this Class: package net.the_goldbeards.lootdebugs.Server; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.network.NetworkRegistry; import net.the_goldbeards.lootdebugs.LootDebugsMain; public class SimpleChannel { private static final String PROTICOL_VERSION = "1"; public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel( new ResourceLocation("corruption","main") ,() -> PROTICOL_VERSION , PROTICOL_VERSION::equals , PROTICOL_VERSION::equals); } Edited October 23, 20214 yr by TheTrueSCP
October 23, 20214 yr Author sorry for asking, but how exactly? In the documentation it is not shown so precisely
October 23, 20214 yr Author ok, i have writed the Button Method but i have no idea what to write in the .sendToServer Method @Override protected void init() { super.init(); this.addButton(new ImageButton(this.guiLeft + 20, this.height / 2 - 49, 20, 18, 0, 0, 19, CONTINUE_BUTTON, (button) -> { PacketHandler.CHANNEL.sendToServer(new PubTile()); ((ImageButton)button).setPosition(this.guiLeft + 20, this.height / 2 - 49); })); this.titleX = (this.xSize - this.font.getStringPropertyWidth(this.title)) / 2; }
October 23, 20214 yr your message class should have two fields: player uuid and button name (and two methods: encode and decode). make an instance of this message class and send it. edit: also include block position in the message. Edited October 23, 20214 yr by MFMods added a few bits
October 23, 20214 yr ok, i'm not surprised i was wrong about the player, i've only ever sent in opposite direction. getSender is there and i should have checked instead of posting blindly... but how would he know the block location without including it in the message?
October 23, 20214 yr Author and why should I instantiate a class when I really only want to call one function?
October 23, 20214 yr Author i dont know how do i create a package and what should be in this something
October 23, 20214 yr Author One question, could you (if you don't mind) please send a sample code, unfortunately I still don't understand the documentation 😅
October 23, 20214 yr Oh gosh, how simple. Oh boy howdy, how easy. If only the documentation matched. Oh wait it does. (I will note that I haven't messed with the code in like 3 years and I am sending and not verifying the TE pos) Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
October 27, 20214 yr Author Sorry for the late reply but I've tried it now. However, the game crashes when i press the button with the following error 1:22:08] [Render thread/FATAL] [minecraft/Minecraft]: Reported exception thrown! net.minecraft.crash.ReportedException: mouseClicked event handler at net.minecraft.client.gui.screen.Screen.wrapScreenError(Screen.java:434) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.mouseButtonCallback(MouseHelper.java:90) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.lambda$null$4(MouseHelper.java:191) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.util.concurrent.ThreadTaskExecutor.execute(ThreadTaskExecutor.java:86) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.client.MouseHelper.lambda$registerCallbacks$5(MouseHelper.java:190) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:36) ~[lwjgl-glfw-3.2.2.jar:build 10] {} at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.2.2.jar:build 10] {} at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3101) ~[lwjgl-glfw-3.2.2.jar:build 10] {} at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:89) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MainWindow.flipFrame(MainWindow.java:305) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1022) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:612) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_202] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_202] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_202] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_202] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {} Caused by: java.lang.NullPointerException at net.the_goldbeards.lootdebugs.screen.PubScreen.lambda$init$0(PubScreen.java:56) ~[main/:?] {re:classloading} at net.minecraft.client.gui.widget.button.Button.onPress(Button.java:26) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.widget.button.AbstractButton.onClick(AbstractButton.java:18) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.widget.Widget.mouseClicked(Widget.java:136) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.INestedGuiEventHandler.mouseClicked(INestedGuiEventHandler.java:31) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.inventory.ContainerScreen.mouseClicked(ContainerScreen.java:299) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.lambda$mouseButtonCallback$0(MouseHelper.java:92) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.Screen.wrapScreenError(Screen.java:427) ~[forge-1.16.5-36.2.8_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} ... 23 more and this is my Screenclass: package net.the_goldbeards.lootdebugs.screen; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screen.inventory.ContainerScreen; import net.minecraft.client.gui.screen.inventory.CraftingScreen; import net.minecraft.client.gui.screen.inventory.FurnaceScreen; import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.ImageButton; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.network.NetworkHooks; import net.minecraftforge.fml.network.simple.SimpleChannel; import net.the_goldbeards.lootdebugs.LootDebugsMain; import net.the_goldbeards.lootdebugs.Server.PacketHandler; import net.the_goldbeards.lootdebugs.Server.ToServerFilterCheck; import net.the_goldbeards.lootdebugs.container.PubContainer; import net.the_goldbeards.lootdebugs.tileentity.PubTile; import org.apache.logging.log4j.Level; public class PubScreen extends ContainerScreen<PubContainer> { PubTile pubTile; private MatrixStack matrixStack; private static int i; private static int j; private static final ResourceLocation GUI = new ResourceLocation(LootDebugsMain.MOD_ID, "textures/gui/pub_gui.png"); private static final ResourceLocation CONTINUE_BUTTON = new ResourceLocation(LootDebugsMain.MOD_ID, "textures/gui/recipe_button.png"); public PubScreen(PubContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) { super(screenContainer, inv, titleIn); // pubTile = (PubTile)screenContainer. } @Override protected void init() { super.init(); this.addButton(new ImageButton(this.guiLeft + 140, this.height / 2 - 30, 20, 18, 0, 0, 19, CONTINUE_BUTTON, (button) -> { System.out.println("BUtton PReeess" + "ssd"); //PacketHandler.CHANNEL.sendToServer(); System.out.println("hi"); PacketHandler.sendToServer(new ToServerFilterCheck(pubTile.getPos())); ((ImageButton)button).setPosition(this.guiLeft + 140, this.height / 2 - 30); })); this.titleX = (this.xSize - this.font.getStringPropertyWidth(this.title)) / 2; } @Override public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { this.renderBackground(matrixStack); super.render(matrixStack, mouseX, mouseY, partialTicks); this.renderHoveredTooltip(matrixStack, mouseX, mouseY); for(int i = 0; i < this.buttons.size(); ++i) { this.buttons.get(i).render(matrixStack,mouseX,mouseY,partialTicks); } } @Override protected void drawGuiContainerBackgroundLayer(MatrixStack matrixStack, float partialTicks, int x, int y) { RenderSystem.color4f(1f,1f,1f,1f); this.minecraft.getTextureManager().bindTexture(GUI); int i = this.guiLeft; int j = this.guiTop; this.matrixStack = matrixStack; this.j= j; this.i = i; this.blit(matrixStack, i,j,0,0,this.xSize, this.ySize); if(false) { /*this.blit(matrixStack, i+55,j+13,183,2,28,0);//Water-emty this.blit(matrixStack, i+55,j+13,183,2,28,3);//Water-1 this.blit(matrixStack, i+55,j+13,183,2,38,5);//Water-2 this.blit(matrixStack, i+55,j+13,183,2,48,5);//Water-3 this.blit(matrixStack, i+55,j+13,183,2,64,12);//Water-4 this.blit(matrixStack, i+55,j+13,183,2,66,21);//Water-Full*/ } } /* protected void actionPerformed(Button button) { ExpandedIndustry.LOGGER.log(Level.DEBUG, "Button clicked"); if(button instanceof ImageButton) { ImageButton lb = (ImageButton)button; EnumAcceptType t = lb.cycleType(); tileEntity.setEnumType(t); PacketHandler.sendToServer(new ToServerFilterClick(0, tileEntity.getPos(), t.ordinal())); } }*/ }
October 29, 20214 yr Author I have assigned it now but the same error still occurs Edited October 29, 20214 yr by TheTrueSCP
October 30, 20214 yr Author public class PubScreen extends ContainerScreen<PubContainer> { PubTile pubTile; private MatrixStack matrixStack; private static int i; private static int j; private static final ResourceLocation GUI = new ResourceLocation(LootDebugsMain.MOD_ID, "textures/gui/pub_gui.png"); private static final ResourceLocation CONTINUE_BUTTON = new ResourceLocation(LootDebugsMain.MOD_ID, "textures/gui/recipe_button.png"); public PubScreen(PubContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) { super(screenContainer, inv, titleIn); pubTile = (PubTile)screenContainer.tileEntity; // pubTile = (PubTile)screenContainer. } @Override protected void init() { super.init(); this.addButton(new ImageButton(this.guiLeft + 140, this.height / 2 - 30, 20, 18, 0, 0, 19, CONTINUE_BUTTON, (button) -> { System.out.println("BUtton PReeess" + "ssd"); //PacketHandler.CHANNEL.sendToServer(); System.out.println("hi"); PacketHandler.sendToServer(new ToServerFilterCheck(pubTile.getPos())); ((ImageButton)button).setPosition(this.guiLeft + 140, this.height / 2 - 30); })); this.titleX = (this.xSize - this.font.getStringPropertyWidth(this.title)) / 2; } @Override public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { this.renderBackground(matrixStack); super.render(matrixStack, mouseX, mouseY, partialTicks); this.renderHoveredTooltip(matrixStack, mouseX, mouseY); for(int i = 0; i < this.buttons.size(); ++i) { this.buttons.get(i).render(matrixStack,mouseX,mouseY,partialTicks); } } @Override protected void drawGuiContainerBackgroundLayer(MatrixStack matrixStack, float partialTicks, int x, int y) { RenderSystem.color4f(1f,1f,1f,1f); this.minecraft.getTextureManager().bindTexture(GUI); int i = this.guiLeft; int j = this.guiTop; this.matrixStack = matrixStack; this.j= j; this.i = i; this.blit(matrixStack, i,j,0,0,this.xSize, this.ySize); if(false) { /*this.blit(matrixStack, i+55,j+13,183,2,28,0);//Water-emty this.blit(matrixStack, i+55,j+13,183,2,28,3);//Water-1 this.blit(matrixStack, i+55,j+13,183,2,38,5);//Water-2 this.blit(matrixStack, i+55,j+13,183,2,48,5);//Water-3 this.blit(matrixStack, i+55,j+13,183,2,64,12);//Water-4 this.blit(matrixStack, i+55,j+13,183,2,66,21);//Water-Full*/ } } /* protected void actionPerformed(Button button) { ExpandedIndustry.LOGGER.log(Level.DEBUG, "Button clicked"); if(button instanceof ImageButton) { ImageButton lb = (ImageButton)button; EnumAcceptType t = lb.cycleType(); tileEntity.setEnumType(t); PacketHandler.sendToServer(new ToServerFilterClick(0, tileEntity.getPos(), t.ordinal())); } }*/ }
October 31, 20214 yr 4 hours ago, TheTrueSCP said: new ToServerFilterCheck(pubTile.getPos()) Cough. On 10/23/2021 at 7:01 AM, diesieben07 said: The block position is also known on the server, sending it again only allows for cheats (if you don't validate it on the server, at which point you might as well just not send it at all). Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.