Fix booklet stand not working on servers & crash when initializing booklet

This commit is contained in:
Ellpeck 2015-11-29 14:30:44 +01:00
parent abec9c81af
commit a99ff70c4d
14 changed files with 52 additions and 15 deletions

View file

@ -89,8 +89,8 @@ public class BlockBookletStand extends BlockContainerBase implements IActAddItem
TileEntityBookletStand tile = (TileEntityBookletStand)world.getTileEntity(x, y, z);
if(tile != null){
//Assign a UUID
if(tile.assignedPlayerUUID == null){
tile.assignedPlayerUUID = player.getUniqueID();
if(tile.assignedPlayer == null){
tile.assignedPlayer = player.getCommandSenderName();
tile.markDirty();
world.markBlockForUpdate(x, y, z);
}

View file

@ -19,6 +19,8 @@ import ellpeck.actuallyadditions.tile.TileEntityBookletStand;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import java.util.Objects;
@SideOnly(Side.CLIENT)
public class GuiBookletStand extends GuiBooklet{
@ -52,7 +54,7 @@ public class GuiBookletStand extends GuiBooklet{
};
this.buttonList.add(this.buttonSetPage);
this.buttonSetPage.visible = Minecraft.getMinecraft().thePlayer.getUniqueID().equals(this.theStand.assignedPlayerUUID);
this.buttonSetPage.visible = Objects.equals(Minecraft.getMinecraft().thePlayer.getCommandSenderName(), this.theStand.assignedPlayer);
//Open the pages the book was assigned
BookletUtils.openIndexEntry(this, this.theStand.assignedEntry, this.theStand.assignedPageInIndex, true);

View file

@ -10,6 +10,8 @@
package ellpeck.actuallyadditions.booklet.page;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.booklet.BookletUtils;
import ellpeck.actuallyadditions.booklet.GuiBooklet;
import ellpeck.actuallyadditions.booklet.InitBooklet;
@ -58,6 +60,7 @@ public class BookletPage{
}
}
@SideOnly(Side.CLIENT)
public static void renderItem(GuiScreen gui, ItemStack stack, int x, int y, float scale){
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
@ -113,19 +116,23 @@ public class BookletPage{
return this;
}
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
}
@SideOnly(Side.CLIENT)
public void render(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
}
@SideOnly(Side.CLIENT)
public void updateScreen(int ticksElapsed){
}
@SuppressWarnings("unchecked")
@SideOnly(Side.CLIENT)
protected void renderTooltipAndTransfer(GuiBooklet gui, ItemStack stack, int x, int y, boolean checkAndTransfer, boolean mousePressed){
boolean flagBefore = gui.mc.fontRenderer.getUnicodeFlag();
gui.mc.fontRenderer.setUnicodeFlag(false);

View file

@ -10,6 +10,8 @@
package ellpeck.actuallyadditions.booklet.page;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.booklet.GuiBooklet;
import ellpeck.actuallyadditions.items.InitItems;
import ellpeck.actuallyadditions.items.ItemCoffee;
@ -28,6 +30,7 @@ public class PageCoffeeRecipe extends BookletPage{
}
@Override
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
gui.mc.getTextureManager().bindTexture(ClientProxy.bulletForMyValentine ? GuiBooklet.resLocValentine : GuiBooklet.resLoc);
gui.drawTexturedModalRect(gui.guiLeft+19, gui.guiTop+20, 146, 94, 99, 60);
@ -35,6 +38,7 @@ public class PageCoffeeRecipe extends BookletPage{
@SuppressWarnings("unchecked")
@Override
@SideOnly(Side.CLIENT)
public void render(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
String strg = "Coffee Machine Recipe";
gui.mc.fontRenderer.drawString(strg, gui.guiLeft+gui.xSize/2-gui.mc.fontRenderer.getStringWidth(strg)/2, gui.guiTop+10, 0);

View file

@ -11,6 +11,8 @@
package ellpeck.actuallyadditions.booklet.page;
import cpw.mods.fml.relauncher.ReflectionHelper;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.booklet.GuiBooklet;
import ellpeck.actuallyadditions.proxy.ClientProxy;
import ellpeck.actuallyadditions.util.ModUtil;
@ -43,6 +45,7 @@ public class PageCrafting extends BookletPage{
}
@Override
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
if(this.recipes[this.recipePos] != null){
gui.mc.getTextureManager().bindTexture(ClientProxy.bulletForMyValentine ? GuiBooklet.resLocValentine : GuiBooklet.resLoc);
@ -52,6 +55,7 @@ public class PageCrafting extends BookletPage{
@SuppressWarnings("unchecked")
@Override
@SideOnly(Side.CLIENT)
public void render(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
IRecipe recipe = this.recipes[this.recipePos];
@ -139,6 +143,7 @@ public class PageCrafting extends BookletPage{
}
@Override
@SideOnly(Side.CLIENT)
public void updateScreen(int ticksElapsed){
if(ticksElapsed%15 == 0){
if(this.recipePos+1 >= this.recipes.length){

View file

@ -10,6 +10,8 @@
package ellpeck.actuallyadditions.booklet.page;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.booklet.GuiBooklet;
import ellpeck.actuallyadditions.proxy.ClientProxy;
import ellpeck.actuallyadditions.recipe.CrusherRecipeRegistry;
@ -35,6 +37,7 @@ public class PageCrusherRecipe extends BookletPage{
}
@Override
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
if(recipe != null){
gui.mc.getTextureManager().bindTexture(ClientProxy.bulletForMyValentine ? GuiBooklet.resLocValentine : GuiBooklet.resLoc);
@ -44,6 +47,7 @@ public class PageCrusherRecipe extends BookletPage{
@SuppressWarnings("unchecked")
@Override
@SideOnly(Side.CLIENT)
public void render(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
if(recipe == null){
gui.mc.fontRenderer.drawSplitString(EnumChatFormatting.DARK_RED+StringUtil.localize("booklet."+ModUtil.MOD_ID_LOWER+".recipeDisabled"), gui.guiLeft+14, gui.guiTop+15, 115, 0);
@ -105,6 +109,7 @@ public class PageCrusherRecipe extends BookletPage{
}
@Override
@SideOnly(Side.CLIENT)
public void updateScreen(int ticksElapsed){
if(ticksElapsed%10 == 0){
List<ItemStack> outputTwos = this.recipe.getRecipeOutputTwos();

View file

@ -10,6 +10,8 @@
package ellpeck.actuallyadditions.booklet.page;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.booklet.GuiBooklet;
import ellpeck.actuallyadditions.proxy.ClientProxy;
import ellpeck.actuallyadditions.util.ModUtil;
@ -38,6 +40,7 @@ public class PageFurnace extends BookletPage{
}
@Override
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
if(this.input != null || this.getInputForOutput(this.result) != null){
gui.mc.getTextureManager().bindTexture(ClientProxy.bulletForMyValentine ? GuiBooklet.resLocValentine : GuiBooklet.resLoc);
@ -47,6 +50,7 @@ public class PageFurnace extends BookletPage{
@SuppressWarnings("unchecked")
@Override
@SideOnly(Side.CLIENT)
public void render(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
ItemStack input = this.input != null ? this.input : this.getInputForOutput(this.result);
if(input == null){

View file

@ -10,6 +10,8 @@
package ellpeck.actuallyadditions.booklet.page;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.booklet.GuiBooklet;
import ellpeck.actuallyadditions.util.AssetUtil;
import net.minecraft.util.ResourceLocation;
@ -26,6 +28,7 @@ public class PagePicture extends PageTextOnly{
}
@Override
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
gui.mc.getTextureManager().bindTexture(this.resLoc);
gui.drawTexturedModalRect(gui.guiLeft, gui.guiTop, 0, 0, gui.xSize, gui.ySize);

View file

@ -10,6 +10,8 @@
package ellpeck.actuallyadditions.booklet.page;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.blocks.InitBlocks;
import ellpeck.actuallyadditions.booklet.GuiBooklet;
import ellpeck.actuallyadditions.proxy.ClientProxy;
@ -40,6 +42,7 @@ public class PageReconstructor extends BookletPage{
}
@Override
@SideOnly(Side.CLIENT)
public void updateScreen(int ticksElapsed){
if(ticksElapsed%15 == 0){
if(this.recipePos+1 >= this.recipes.length){
@ -52,6 +55,7 @@ public class PageReconstructor extends BookletPage{
}
@Override
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
if(this.recipes[this.recipePos] != null){
gui.mc.getTextureManager().bindTexture(ClientProxy.bulletForMyValentine ? GuiBooklet.resLocValentine : GuiBooklet.resLoc);
@ -61,6 +65,7 @@ public class PageReconstructor extends BookletPage{
@SuppressWarnings("unchecked")
@Override
@SideOnly(Side.CLIENT)
public void render(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
ReconstructorRecipeHandler.Recipe recipe = this.recipes[this.recipePos];
if(recipe == null){

View file

@ -10,6 +10,8 @@
package ellpeck.actuallyadditions.booklet.page;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.booklet.GuiBooklet;
import net.minecraft.item.ItemStack;
@ -28,6 +30,7 @@ public class PageTextOnly extends BookletPage{
}
@Override
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
String text = gui.currentPage.getText();
if(text != null && !text.isEmpty()){

View file

@ -119,7 +119,7 @@ public class ItemDrill extends ItemEnergy{
//Notify the Player and log the Exception
catch(Exception e){
player.addChatComponentMessage(new ChatComponentText("Ouch! That really hurt! You must have done something wrong, don't do that again please!"));
ModUtil.LOGGER.error("Player "+player.getDisplayName()+" who should place a Block using a Drill at "+player.posX+", "+player.posY+", "+player.posZ+" in World "+world.provider.dimensionId+" threw an Exception! Don't let that happen again!");
ModUtil.LOGGER.error("Player "+player.getCommandSenderName()+" who should place a Block using a Drill at "+player.posX+", "+player.posY+", "+player.posZ+" in World "+world.provider.dimensionId+" threw an Exception! Don't let that happen again!");
}
}
else{

View file

@ -37,7 +37,7 @@ public class SpecialRenderInit{
if(!specialList.isEmpty()){
for(Map.Entry<String, RenderSpecial> entry : specialList.entrySet()){
//Does the player have one of the names from the list?
if(StringUtil.equalsToLowerCase(entry.getKey(), event.entityPlayer.getDisplayName())){
if(StringUtil.equalsToLowerCase(entry.getKey(), event.entityPlayer.getCommandSenderName())){
//Render the special Item/Block
entry.getValue().render(event.entityPlayer);
break;

View file

@ -24,6 +24,8 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager;
import java.util.Objects;
public class PacketBookletStandButton implements IMessage{
private int tileX;
@ -92,7 +94,7 @@ public class PacketBookletStandButton implements IMessage{
EntityPlayer player = (EntityPlayer)world.getEntityByID(message.playerID);
if(tile instanceof TileEntityBookletStand){
if(player.getUniqueID().equals(((TileEntityBookletStand)tile).assignedPlayerUUID)){
if(Objects.equals(player.getCommandSenderName(), ((TileEntityBookletStand)tile).assignedPlayer)){
((TileEntityBookletStand)tile).setEntry(message.entryID, message.chapterID, message.pageID, message.pageInIndex);
world.markBlockForUpdate(message.tileX, message.tileY, message.tileZ);
}

View file

@ -16,8 +16,6 @@ import ellpeck.actuallyadditions.booklet.entry.BookletEntry;
import ellpeck.actuallyadditions.booklet.page.BookletPage;
import net.minecraft.nbt.NBTTagCompound;
import java.util.UUID;
public class TileEntityBookletStand extends TileEntityBase{
public BookletChapter assignedChapter;
@ -25,7 +23,7 @@ public class TileEntityBookletStand extends TileEntityBase{
public BookletEntry assignedEntry;
public int assignedPageInIndex;
public UUID assignedPlayerUUID;
public String assignedPlayer;
@Override
public boolean canUpdate(){
@ -39,9 +37,8 @@ public class TileEntityBookletStand extends TileEntityBase{
compound.setInteger("Page", this.assignedPage == null ? -1 : this.assignedPage.getID());
compound.setInteger("PageInIndex", this.assignedPageInIndex);
if(this.assignedPlayerUUID != null){
compound.setLong("PlayerLeastSignificant", this.assignedPlayerUUID.getLeastSignificantBits());
compound.setLong("PlayerMostSignificant", this.assignedPlayerUUID.getMostSignificantBits());
if(this.assignedPlayer != null){
compound.setString("Player", this.assignedPlayer);
}
}
@ -49,9 +46,9 @@ public class TileEntityBookletStand extends TileEntityBase{
public void readSyncableNBT(NBTTagCompound compound, boolean isForSync){
this.setEntry(compound.getInteger("Entry"), compound.getInteger("Chapter"), compound.getInteger("Page"), compound.getInteger("PageInIndex"));
long mostSigBits = compound.getLong("PlayerMostSignificant");
if(mostSigBits > 0){
this.assignedPlayerUUID = new UUID(mostSigBits, compound.getLong("PlayerLeastSignificant"));
String player = compound.getString("Player");
if(player != null){
this.assignedPlayer = player;
}
}