From b68a081350499eb42a78938c409fa6bbb81af275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emmanuel=20Beno=C3=AEt?= <tseeker@nocternity.net> Date: Wed, 22 Jun 2016 15:34:20 +0200 Subject: [PATCH] Alloy furnace - More reliance on vanilla TE updates --- alloy-furnace-gui-1.xcf | Bin 43441 -> 43441 bytes .../tech/base/TBAlloyFurnaceContainer.java | 7 +- .../mmm/tech/base/TBAlloyFurnaceMessage.java | 34 +------- .../tech/base/TBAlloyFurnaceTileEntity.java | 78 ++++++++++++++++-- src/java/mmm/tech/base/TechBase.java | 1 - .../mmm/textures/gui/alloy_furnace_1.png | Bin 2169 -> 2172 bytes 6 files changed, 77 insertions(+), 43 deletions(-) diff --git a/alloy-furnace-gui-1.xcf b/alloy-furnace-gui-1.xcf index d6135f55b7a310e0bc567b468feccc447445241e..04a727648244b8c28d90dc93a4292a2a5bc33d31 100644 GIT binary patch delta 89 zcmdmZnQ7x?rU`b8K^yJe85vVHw=@1@nq1FOF!?QuhN=<+1PA~r5N2UuU^PP(V|CkX a#rl+qndLv%WF?N+$xk_RHh<>Ww*UaxEfq-s delta 101 zcmdmZnQ7x?rU`b8b{p;885v_Xw=@1@n*5YAWAaxP4NWNq2oL~LAk4zRz^aET#%c%R kPqtx`+MK|8oQawFKlfxUj@ZeqECrJvh_Y<{%&~6)0J_~5ssI20 diff --git a/src/java/mmm/tech/base/TBAlloyFurnaceContainer.java b/src/java/mmm/tech/base/TBAlloyFurnaceContainer.java index d9d05b8..afb7df7 100644 --- a/src/java/mmm/tech/base/TBAlloyFurnaceContainer.java +++ b/src/java/mmm/tech/base/TBAlloyFurnaceContainer.java @@ -5,7 +5,6 @@ import mmm.materials.MAlloyRecipe; import mmm.utils.UContainers; import mmm.utils.UInventoryDisplay; import mmm.utils.UInventoryGrid; -import mmm.utils.URegistry; import mmm.utils.slots.USDisplay; import mmm.utils.slots.USFuel; import mmm.utils.slots.USOutput; @@ -84,9 +83,8 @@ public class TBAlloyFurnaceContainer public void setCurrentRecipe( final ResourceLocation name , final boolean confirm ) { - MAlloyRecipe recipe = MAlloyRecipe.REGISTRY.getRecipe( name ); + final MAlloyRecipe recipe = MAlloyRecipe.REGISTRY.getRecipe( name ); if ( recipe == null ) { - // XXX log return; } @@ -97,8 +95,7 @@ public class TBAlloyFurnaceContainer this.recipe.setInventorySlotContents( 6 , recipe.output ); if ( confirm ) { - this.tileEntity.recipe = recipe; - URegistry.network.sendToAll( new TBAlloyFurnaceMessage( this.position , name , true ) ); + this.tileEntity.setRecipe( name ); } } diff --git a/src/java/mmm/tech/base/TBAlloyFurnaceMessage.java b/src/java/mmm/tech/base/TBAlloyFurnaceMessage.java index 7652d40..1dbd387 100644 --- a/src/java/mmm/tech/base/TBAlloyFurnaceMessage.java +++ b/src/java/mmm/tech/base/TBAlloyFurnaceMessage.java @@ -2,18 +2,12 @@ package mmm.tech.base; import io.netty.buffer.ByteBuf; -import mmm.materials.MAlloyRecipe; import mmm.utils.I_UMessage; -import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; import net.minecraftforge.fml.common.network.ByteBufUtils; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; @@ -60,36 +54,14 @@ public class TBAlloyFurnaceMessage } - @Override - @SideOnly( Side.CLIENT ) - public void handleOnClient( final EntityPlayerSP player ) - { - World world = player.getEntityWorld( ); - TileEntity te = world.getTileEntity( this.blockPos ); - if ( ! ( te instanceof TBAlloyFurnaceTileEntity ) ) { - return; - } - - TBAlloyFurnaceTileEntity afte = (TBAlloyFurnaceTileEntity) te; - MAlloyRecipe recipe = MAlloyRecipe.REGISTRY.getRecipe( selected ); - if ( recipe == null ) { - recipe = MAlloyRecipe.REGISTRY.getRecipes( ).get( 0 ); - } - afte.recipe = recipe; - } - - @Override public void handleOnServer( final EntityPlayerMP player ) { final Container curCont = player.openContainer; - if ( ! ( curCont instanceof TBAlloyFurnaceContainer ) ) { - // XXX log? - return; + if ( curCont instanceof TBAlloyFurnaceContainer ) { + final TBAlloyFurnaceContainer container = (TBAlloyFurnaceContainer) curCont; + container.setCurrentRecipe( this.selected , this.confirm ); } - - final TBAlloyFurnaceContainer container = (TBAlloyFurnaceContainer) curCont; - container.setCurrentRecipe( this.selected , this.confirm ); } } diff --git a/src/java/mmm/tech/base/TBAlloyFurnaceTileEntity.java b/src/java/mmm/tech/base/TBAlloyFurnaceTileEntity.java index 9cd0a86..9a8fa56 100644 --- a/src/java/mmm/tech/base/TBAlloyFurnaceTileEntity.java +++ b/src/java/mmm/tech/base/TBAlloyFurnaceTileEntity.java @@ -3,7 +3,10 @@ package mmm.tech.base; import mmm.materials.MAlloyRecipe; import mmm.utils.UInventoryGrid; +import net.minecraft.block.state.IBlockState; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.util.Constants.NBT; @@ -17,6 +20,7 @@ public class TBAlloyFurnaceTileEntity public final UInventoryGrid input; public final UInventoryGrid fuel; public final UInventoryGrid output; + public MAlloyRecipe recipe; @@ -36,11 +40,7 @@ public class TBAlloyFurnaceTileEntity this.input.deserializeNBT( compound.getTagList( "Input" , NBT.TAG_COMPOUND ) ); this.fuel.deserializeNBT( compound.getTagList( "Fuel" , NBT.TAG_COMPOUND ) ); this.output.deserializeNBT( compound.getTagList( "Output" , NBT.TAG_COMPOUND ) ); - String recipeName = compound.getString( "Recipe" ); - this.recipe = MAlloyRecipe.REGISTRY.getRecipe( new ResourceLocation( recipeName ) ); - if ( this.recipe == null ) { - this.recipe = MAlloyRecipe.REGISTRY.getRecipes( ).get( 0 ); - } + this.readSyncData( compound ); } @@ -51,8 +51,74 @@ public class TBAlloyFurnaceTileEntity compound.setTag( "Input" , this.input.serializeNBT( ) ); compound.setTag( "Fuel" , this.fuel.serializeNBT( ) ); compound.setTag( "Output" , this.output.serializeNBT( ) ); - compound.setString( "Recipe" , this.recipe.name.toString( ) ); + this.writeSyncData( compound ); + System.err.println( "tag " + compound.toString( ) ); return compound; } + + @Override + public SPacketUpdateTileEntity getUpdatePacket( ) + { + final NBTTagCompound compound = new NBTTagCompound( ); + this.writeSyncData( compound ); + return new SPacketUpdateTileEntity( this.pos , 0 , compound ); + } + + + @Override + public NBTTagCompound getUpdateTag( ) + { + final NBTTagCompound compound = new NBTTagCompound( ); + this.writeToNBT( compound ); + return compound; + } + + + @Override + public void onDataPacket( final NetworkManager net , final SPacketUpdateTileEntity pkt ) + { + if ( this.worldObj.isRemote ) { + this.readSyncData( pkt.getNbtCompound( ) ); + final IBlockState state = this.worldObj.getBlockState( this.pos ); + this.worldObj.notifyBlockUpdate( this.pos , state , state , 3 ); + } + } + + + public void setRecipe( final ResourceLocation location ) + { + MAlloyRecipe recipe = MAlloyRecipe.REGISTRY.getRecipe( location ); + if ( recipe == null ) { + recipe = MAlloyRecipe.REGISTRY.getRecipes( ).get( 0 ); + } + + if ( recipe == this.recipe ) { + return; + } + this.recipe = recipe; + + if ( !this.worldObj.isRemote ) { + this.markDirty( ); + final IBlockState state = this.worldObj.getBlockState( this.pos ); + this.worldObj.notifyBlockUpdate( this.pos , state , state , 3 ); + } + } + + + private void readSyncData( final NBTTagCompound compound ) + { + final String recipeName = compound.getString( "Recipe" ); + this.recipe = MAlloyRecipe.REGISTRY.getRecipe( new ResourceLocation( recipeName ) ); + if ( this.recipe == null ) { + this.recipe = MAlloyRecipe.REGISTRY.getRecipes( ).get( 0 ); + } + } + + + private void writeSyncData( final NBTTagCompound compound ) + { + compound.setString( "Recipe" , this.recipe.name.toString( ) ); + } + } diff --git a/src/java/mmm/tech/base/TechBase.java b/src/java/mmm/tech/base/TechBase.java index 62ed93d..87c73d9 100644 --- a/src/java/mmm/tech/base/TechBase.java +++ b/src/java/mmm/tech/base/TechBase.java @@ -30,7 +30,6 @@ public class TechBase GameRegistry.registerTileEntity( TBAlloyFurnaceTileEntity.class , "mmm:tech/base/alloy_furnace" ); NetworkRegistry.INSTANCE.registerGuiHandler( Mmm.get( ) , new TBAlloyFurnaceGuiHandler( ) ); URegistry.addServerMessage( TBAlloyFurnaceMessage.class ); - URegistry.addClientMessage( TBAlloyFurnaceMessage.class ); // FIXME test, remove this later MAlloyRecipe.build( ).setName( "test" ).setBurnTime( 200 ).setExperience( .05f ) diff --git a/src/resources/assets/mmm/textures/gui/alloy_furnace_1.png b/src/resources/assets/mmm/textures/gui/alloy_furnace_1.png index 36cbaad31063b97d94930d2e8e2de8c1235ce700..2fded745ce4f251adcbc7f64d0a3466b4cf504b1 100644 GIT binary patch delta 1921 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 delta 1937 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