mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 21:17:32 +00:00
Brush Setting and Getting Packets
This commit is contained in:
1 parent
4b8e0cd8c3
commit
6193f77bf5
12 files changed
+146
-58
No files matched your search
@@ -37,6 +37,7 @@ import kamkeel.npcs.network.packets.request.effects.EffectSavePacket;
|
||||
import kamkeel.npcs.network.packets.request.effects.EffectsGetPacket;
|
||||
import kamkeel.npcs.network.packets.request.faction.*;
|
||||
import kamkeel.npcs.network.packets.request.feather.DimensionTeleportPacket;
|
||||
import kamkeel.npcs.network.packets.request.item.ColorBrushPacket;
|
||||
import kamkeel.npcs.network.packets.request.item.ColorSetPacket;
|
||||
import kamkeel.npcs.network.packets.request.jobs.JobGetPacket;
|
||||
import kamkeel.npcs.network.packets.request.jobs.JobSavePacket;
|
||||
@@ -309,6 +310,7 @@ public class PacketHandler {
|
||||
REQUEST_PACKET.registerPacket(new MovingPathGetPacket());
|
||||
|
||||
// Tool Packets
|
||||
REQUEST_PACKET.registerPacket(new ColorBrushPacket());
|
||||
REQUEST_PACKET.registerPacket(new ColorSetPacket());
|
||||
|
||||
// Custom Effect Packets
|
||||
|
||||
@@ -178,5 +178,5 @@ public enum EnumRequestPacket {
|
||||
EffectRemove,
|
||||
EffectSave,
|
||||
|
||||
ColorSet,
|
||||
ColorSet, ColorBrush,
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package kamkeel.npcs.network.packets.request.item;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import kamkeel.npcs.network.AbstractPacket;
|
||||
import kamkeel.npcs.network.PacketChannel;
|
||||
import kamkeel.npcs.network.PacketHandler;
|
||||
import kamkeel.npcs.network.PacketUtil;
|
||||
import kamkeel.npcs.network.enums.EnumItemPacketType;
|
||||
import kamkeel.npcs.network.enums.EnumRequestPacket;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import noppes.npcs.CustomNpcsPermissions;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static noppes.npcs.items.ItemNpcTool.BRUSH_COLOR_TAG;
|
||||
|
||||
public final class ColorBrushPacket extends AbstractPacket {
|
||||
public static String packetName = "Request|ColorBrush";
|
||||
|
||||
private int color;
|
||||
|
||||
public ColorBrushPacket(int color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
public ColorBrushPacket() {}
|
||||
|
||||
@Override
|
||||
public Enum getType() {
|
||||
return EnumRequestPacket.ColorBrush;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PacketChannel getChannel() {
|
||||
return PacketHandler.REQUEST_PACKET;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomNpcsPermissions.Permission getPermission() {
|
||||
return CustomNpcsPermissions.NPC_BUILD;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void sendData(ByteBuf out) throws IOException {
|
||||
out.writeInt(this.color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveData(ByteBuf in, EntityPlayer player) throws IOException {
|
||||
if (!(player instanceof EntityPlayerMP))
|
||||
return;
|
||||
if (!PacketUtil.verifyItemPacket(EnumItemPacketType.BRUSH, player))
|
||||
return;
|
||||
|
||||
int color = in.readInt();
|
||||
ItemStack stack = player.getHeldItem();
|
||||
setBrushColor(stack, color);
|
||||
}
|
||||
|
||||
public static void setBrushColor(ItemStack brush, int color){
|
||||
NBTTagCompound brushCompound = brush.getTagCompound();
|
||||
if(brushCompound == null)
|
||||
brushCompound = new NBTTagCompound();
|
||||
|
||||
brushCompound.setInteger(BRUSH_COLOR_TAG, color);
|
||||
brush.setTagCompound(brushCompound);
|
||||
}
|
||||
}
|
||||
@@ -3,29 +3,33 @@ package kamkeel.npcs.network.packets.request.item;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import kamkeel.npcs.network.AbstractPacket;
|
||||
import kamkeel.npcs.network.PacketChannel;
|
||||
import kamkeel.npcs.network.PacketHandler;
|
||||
import kamkeel.npcs.network.PacketUtil;
|
||||
import kamkeel.npcs.network.*;
|
||||
import kamkeel.npcs.network.enums.EnumItemPacketType;
|
||||
import kamkeel.npcs.network.enums.EnumRequestPacket;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import noppes.npcs.CustomNpcsPermissions;
|
||||
import noppes.npcs.blocks.tiles.TileColorable;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static noppes.npcs.items.ItemNpcTool.BRUSH_COLOR_TAG;
|
||||
import static noppes.npcs.items.ItemNpcTool.getColor;
|
||||
|
||||
public final class ColorSetPacket extends AbstractPacket {
|
||||
public static String packetName = "Request|ColorSet";
|
||||
|
||||
private int color;
|
||||
private int x;
|
||||
private int y;
|
||||
private int z;
|
||||
|
||||
public ColorSetPacket(int color) {
|
||||
this.color = color;
|
||||
public ColorSetPacket(int x, int y, int z) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
}
|
||||
|
||||
public ColorSetPacket() {}
|
||||
@@ -48,7 +52,9 @@ public final class ColorSetPacket extends AbstractPacket {
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void sendData(ByteBuf out) throws IOException {
|
||||
out.writeInt(this.color);
|
||||
out.writeInt(this.x);
|
||||
out.writeInt(this.y);
|
||||
out.writeInt(this.z);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -58,9 +64,17 @@ public final class ColorSetPacket extends AbstractPacket {
|
||||
if (!PacketUtil.verifyItemPacket(EnumItemPacketType.BRUSH, player))
|
||||
return;
|
||||
|
||||
int color = in.readInt();
|
||||
int x = in.readInt();
|
||||
int y = in.readInt();
|
||||
int z = in.readInt();
|
||||
|
||||
TileEntity tile = player.worldObj.getTileEntity(x, y, z);
|
||||
ItemStack stack = player.getHeldItem();
|
||||
setBrushColor(stack, color);
|
||||
if(tile instanceof TileColorable) {
|
||||
int color = getColor(stack.getTagCompound());
|
||||
TileColorable colorable = (TileColorable) tile;
|
||||
colorable.setColor(color);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setBrushColor(ItemStack brush, int color){
|
||||
|
||||
@@ -10,7 +10,6 @@ import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
@@ -46,7 +45,7 @@ public class BlockBanner extends BlockContainer{
|
||||
TileBanner tile = (TileBanner) par1World.getTileEntity(i, j, k);
|
||||
if(tile.canEdit())
|
||||
return true;
|
||||
else if(TileColorable.doNotAllowModification(item))
|
||||
else if(TileColorable.allowColorChange(item) != TileColorable.ColorChangeType.DYE)
|
||||
return false;
|
||||
|
||||
int color = colorTableInts[BlockColored.func_150031_c(item.getItemDamage())];
|
||||
|
||||
@@ -11,7 +11,6 @@ import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
@@ -19,7 +18,6 @@ import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
import noppes.npcs.CustomItems;
|
||||
import noppes.npcs.NoppesUtilServer;
|
||||
import noppes.npcs.blocks.tiles.TileColorable;
|
||||
import noppes.npcs.blocks.tiles.TileCouchWool;
|
||||
@@ -38,8 +36,12 @@ public class BlockCouchWool extends BlockContainer {
|
||||
@Override
|
||||
public boolean onBlockActivated(World par1World, int i, int j, int k, EntityPlayer player, int par6, float par7, float par8, float par9){
|
||||
ItemStack item = player.inventory.getCurrentItem();
|
||||
if(TileColorable.doNotAllowModification(item))
|
||||
TileColorable.ColorChangeType colorChangeType = TileColorable.allowColorChange(item);
|
||||
if(colorChangeType == TileColorable.ColorChangeType.NONE)
|
||||
return BlockChair.MountBlock(par1World, i, j, k, player);
|
||||
else if(colorChangeType == TileColorable.ColorChangeType.PAINTBRUSH)
|
||||
return false;
|
||||
|
||||
int meta = par1World.getBlockMetadata(i, j, k);
|
||||
if(meta >= 7)
|
||||
j--;
|
||||
|
||||
@@ -10,7 +10,6 @@ import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
@@ -40,7 +39,7 @@ public class BlockShortLamp extends BlockContainer {
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player,
|
||||
int side, float hitX, float hitY, float hitZ) {
|
||||
ItemStack item = player.inventory.getCurrentItem();
|
||||
if(TileColorable.doNotAllowModification(item))
|
||||
if(TileColorable.allowColorChange(item) != TileColorable.ColorChangeType.DYE)
|
||||
return false;
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
TileColorable tile = (TileColorable) world.getTileEntity(x, y, z);
|
||||
|
||||
@@ -10,7 +10,6 @@ import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
@@ -39,8 +38,8 @@ public class BlockTallLamp extends BlockContainer {
|
||||
@Override
|
||||
public boolean onBlockActivated(World par1World, int i, int j, int k, EntityPlayer player, int par6, float par7, float par8, float par9){
|
||||
ItemStack item = player.inventory.getCurrentItem();
|
||||
if(TileColorable.doNotAllowModification(item))
|
||||
return false;
|
||||
if(TileColorable.allowColorChange(item) != TileColorable.ColorChangeType.DYE)
|
||||
return false;
|
||||
int meta = par1World.getBlockMetadata(i, j, k);
|
||||
if(meta >= 7)
|
||||
j--;
|
||||
|
||||
@@ -10,7 +10,6 @@ import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
@@ -42,8 +41,8 @@ public class BlockWallBanner extends BlockContainer{
|
||||
TileWallBanner tile = (TileWallBanner) par1World.getTileEntity(i, j, k);
|
||||
if(tile.canEdit())
|
||||
return true;
|
||||
else if(TileColorable.doNotAllowModification(item))
|
||||
return false;
|
||||
else if(TileColorable.allowColorChange(item) != TileColorable.ColorChangeType.DYE)
|
||||
return false;
|
||||
|
||||
int color = colorTableInts[BlockColored.func_150031_c(item.getItemDamage())];
|
||||
if(tile.color != color){
|
||||
|
||||
@@ -7,9 +7,6 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import noppes.npcs.NoppesUtilServer;
|
||||
import noppes.npcs.items.ItemNpcTool;
|
||||
import noppes.npcs.items.ItemStaff;
|
||||
|
||||
import static kamkeel.npcs.util.ColorUtil.colorTableInts;
|
||||
|
||||
public class TileColorable extends TileVariant {
|
||||
|
||||
@@ -31,27 +28,22 @@ public class TileColorable extends TileVariant {
|
||||
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
|
||||
}
|
||||
|
||||
public void changeColor(EntityPlayer player, ItemStack stack){
|
||||
if(stack == null)
|
||||
return;
|
||||
public static ColorChangeType allowColorChange(ItemStack stack){
|
||||
if(stack == null || stack.getItem() == null)
|
||||
return ColorChangeType.NONE;
|
||||
|
||||
if(stack.getItem() == null)
|
||||
return;
|
||||
if(stack.getItem() == Items.dye)
|
||||
return ColorChangeType.DYE;
|
||||
|
||||
if(stack.getItem() == Items.dye){
|
||||
int color = colorTableInts[BlockColored.func_150031_c(stack.getItemDamage())];
|
||||
NoppesUtilServer.consumeItemStack(1, player);
|
||||
setColor(color);
|
||||
} else if(ItemNpcTool.isPaintbrush(stack)){
|
||||
int color = colorTableInts[BlockColored.func_150031_c(stack.getItemDamage())];
|
||||
NoppesUtilServer.consumeItemStack(1, player);
|
||||
setColor(color);
|
||||
}
|
||||
if(ItemNpcTool.isPaintbrush(stack))
|
||||
return ColorChangeType.PAINTBRUSH;
|
||||
|
||||
return ColorChangeType.NONE;
|
||||
}
|
||||
|
||||
public static boolean doNotAllowModification(ItemStack stack){
|
||||
return stack == null || stack.getItem() == null ||
|
||||
(stack.getItem() != Items.dye &&
|
||||
!(stack.getItem() instanceof ItemNpcTool));
|
||||
public enum ColorChangeType {
|
||||
NONE,
|
||||
DYE,
|
||||
PAINTBRUSH
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,10 @@
|
||||
package noppes.npcs.client.gui.item;
|
||||
|
||||
import kamkeel.npcs.network.PacketClient;
|
||||
import kamkeel.npcs.network.packets.request.item.ColorSetPacket;
|
||||
import kamkeel.npcs.network.packets.request.item.ColorBrushPacket;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.resources.IResource;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import noppes.npcs.client.gui.util.GuiNPCInterface;
|
||||
import noppes.npcs.client.gui.util.GuiNpcButton;
|
||||
@@ -18,8 +17,6 @@ import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import static noppes.npcs.items.ItemNpcTool.BRUSH_COLOR_TAG;
|
||||
|
||||
public class GuiNpcPaintbrush extends GuiNPCInterface {
|
||||
|
||||
private GuiNpcTextField textfield;
|
||||
@@ -90,7 +87,7 @@ public class GuiNpcPaintbrush extends GuiNPCInterface {
|
||||
|
||||
@Override
|
||||
public void close(){
|
||||
PacketClient.sendClient(new ColorSetPacket(this.color));
|
||||
PacketClient.sendClient(new ColorBrushPacket(this.color));
|
||||
super.close();
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,9 @@ import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import kamkeel.npcs.network.PacketClient;
|
||||
import kamkeel.npcs.network.packets.request.item.ColorBrushPacket;
|
||||
import kamkeel.npcs.network.packets.request.item.ColorSetPacket;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@@ -12,12 +14,13 @@ import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ChatComponentTranslation;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
import noppes.npcs.CustomItems;
|
||||
import noppes.npcs.CustomNpcs;
|
||||
import noppes.npcs.CustomNpcsPermissions;
|
||||
import noppes.npcs.blocks.BlockBanner;
|
||||
import noppes.npcs.blocks.BlockTallLamp;
|
||||
import noppes.npcs.blocks.tiles.TileColorable;
|
||||
import noppes.npcs.client.NoppesUtil;
|
||||
import noppes.npcs.constants.EnumGuiType;
|
||||
@@ -90,18 +93,26 @@ public class ItemNpcTool extends Item {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
|
||||
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
|
||||
if(!world.isRemote)
|
||||
return false;
|
||||
|
||||
if(isPaintbrush(stack)) {
|
||||
Block block = world.getBlock(x, y, z);
|
||||
if(block instanceof BlockTallLamp || block instanceof BlockBanner){
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
if(meta >= 7)
|
||||
y--;
|
||||
}
|
||||
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
if(tile instanceof TileColorable) {
|
||||
if(player.isSneaking() && world.isRemote){
|
||||
if(player.isSneaking()){
|
||||
int color = ((TileColorable) tile).color;
|
||||
PacketClient.sendClient(new ColorSetPacket(color));
|
||||
PacketClient.sendClient(new ColorBrushPacket(color));
|
||||
}
|
||||
else if (!world.isRemote && CustomNpcsPermissions.hasPermission(player, CustomNpcsPermissions.NPC_BUILD)){
|
||||
int color = getColor(stack.getTagCompound());
|
||||
TileColorable colorable = (TileColorable) tile;
|
||||
colorable.setColor(color);
|
||||
else {
|
||||
PacketClient.sendClient(new ColorSetPacket(x, y, z));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user