From 720f2cc48ef72eab4931956136aa518d2ef67bb8 Mon Sep 17 00:00:00 2001 From: MineDaveXD Date: Sun, 18 Feb 2018 23:30:31 +0100 Subject: [PATCH] Followup on previous PR (#372) * requireBagSpace now allows inventory space * Added nl_NL translation. (updated en_US to fit previous commit) * Fully tested and fixed some bugs * Forgot about Bittank * Fixed previous commit * Simplified space calculation methods * Method-ified certain identical pieces of code --- .../core/api/ChiselAndBitsAPI.java | 4 +- .../helpers/BitInventoryFeeder.java | 132 +++++++++ .../mod/chiselsandbits/helpers/ModUtil.java | 95 ------- .../mod/chiselsandbits/items/ItemBitBag.java | 20 -- .../mod/chiselsandbits/items/ItemChisel.java | 20 +- .../chiselsandbits/items/ItemChiseledBit.java | 46 ++- .../items/ItemNegativePrint.java | 32 +-- .../items/ItemPositivePrint.java | 9 +- .../network/packets/PacketChisel.java | 30 +- .../network/packets/PacketUndo.java | 4 +- .../assets/chiselsandbits/lang/en_us.lang | 7 +- .../assets/chiselsandbits/lang/nl_nl.lang | 263 ++++++++++++++++++ 12 files changed, 469 insertions(+), 193 deletions(-) create mode 100644 src/main/java/mod/chiselsandbits/helpers/BitInventoryFeeder.java create mode 100644 src/main/resources/assets/chiselsandbits/lang/nl_nl.lang diff --git a/src/main/java/mod/chiselsandbits/core/api/ChiselAndBitsAPI.java b/src/main/java/mod/chiselsandbits/core/api/ChiselAndBitsAPI.java index 403d9d45..ace3f8db 100644 --- a/src/main/java/mod/chiselsandbits/core/api/ChiselAndBitsAPI.java +++ b/src/main/java/mod/chiselsandbits/core/api/ChiselAndBitsAPI.java @@ -25,6 +25,7 @@ import mod.chiselsandbits.helpers.BitOperation; import mod.chiselsandbits.helpers.DeprecationHelper; import mod.chiselsandbits.helpers.ModUtil; +import mod.chiselsandbits.helpers.BitInventoryFeeder; import mod.chiselsandbits.integration.mcmultipart.MCMultipartProxy; import mod.chiselsandbits.items.ItemBitBag; import mod.chiselsandbits.items.ItemChisel; @@ -295,7 +296,8 @@ public void giveBitToPlayer( return; } - ModUtil.feedPlayer( player.getEntityWorld(), player, ei ); + BitInventoryFeeder feeder = new BitInventoryFeeder( player, player.getEntityWorld() ); + feeder.addItem(ei); return; } else if ( !player.inventory.addItemStackToInventory( stack ) ) diff --git a/src/main/java/mod/chiselsandbits/helpers/BitInventoryFeeder.java b/src/main/java/mod/chiselsandbits/helpers/BitInventoryFeeder.java new file mode 100644 index 00000000..1198cfda --- /dev/null +++ b/src/main/java/mod/chiselsandbits/helpers/BitInventoryFeeder.java @@ -0,0 +1,132 @@ +package mod.chiselsandbits.helpers; + +import java.util.*; + +import mod.chiselsandbits.core.ChiselsAndBits; +import mod.chiselsandbits.items.ItemBitBag; +import mod.chiselsandbits.items.ItemChiseledBit; +import mod.chiselsandbits.items.ItemBitBag.BagPos; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.SoundEvents; +import net.minecraft.item.ItemStack; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.EntityItemPickupEvent; +import net.minecraftforge.fml.common.eventhandler.Event.Result; + +public class BitInventoryFeeder +{ + private final static Random itemRand = new Random(); + ArrayList seenBits = new ArrayList<>(); + boolean hasSentMessage = false; + final EntityPlayer player; + final World world; + + public BitInventoryFeeder( + final EntityPlayer p, + final World w) + { + player = p; + world = w; + } + + public void addItem( + final EntityItem ei) + { + ItemStack is = ModUtil.nonNull( ei.getEntityItem() ); + + final List bags = ItemBitBag.getBags( player.inventory ); + + if ( !ModUtil.containsAtLeastOneOf( player.inventory, is ) ) + { + final ItemStack minSize = is.copy(); + + if ( ModUtil.getStackSize( minSize ) > minSize.getMaxStackSize() ) + { + ModUtil.setStackSize( minSize, minSize.getMaxStackSize() ); + } + + ModUtil.adjustStackSize( is, -ModUtil.getStackSize( minSize ) ); + player.inventory.addItemStackToInventory( minSize ); + ModUtil.adjustStackSize( is, ModUtil.getStackSize( minSize ) ); + } + + for ( final BagPos bp : bags ) + { + is = bp.inv.insertItem( is ); + } + + if ( ModUtil.isEmpty( is ) ) + return; + + ei.setEntityItemStack( is ); + EntityItemPickupEvent event = new EntityItemPickupEvent( player, ei ); + + if ( MinecraftForge.EVENT_BUS.post( event ) ) + { + // cancelled... + spawnItem( world, ei ); + } + else + { + if ( event.getResult() != Result.DENY ) + { + is = ei.getEntityItem(); + + if ( is != null && !player.inventory.addItemStackToInventory( is ) ) + { + ei.setEntityItemStack( is ); + //Never spawn the items for dropped excess items if setting is enabled. + if ( !ChiselsAndBits.getConfig().voidExcessBits ) + { + spawnItem( world, ei ); + } + } + else + { + if ( !ei.isSilent() ) + { + ei.worldObj.playSound( (EntityPlayer) null, ei.posX, ei.posY, ei.posZ, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, 0.2F, ( ( itemRand.nextFloat() - itemRand.nextFloat() ) * 0.7F + 1.0F ) * 2.0F ); + } + } + + player.inventory.markDirty(); + + if ( player.inventoryContainer != null ) + { + player.inventoryContainer.detectAndSendChanges(); + } + + } + else + spawnItem( world, ei ); + } + + final int blk = ItemChiseledBit.getStackState( is ); + if ( ChiselsAndBits.getConfig().voidExcessBits && !seenBits.contains(blk) && !hasSentMessage ) + { + if ( !ItemChiseledBit.hasBitSpace( player, blk ) ) + { + player.addChatMessage( new TextComponentTranslation( "mod.chiselsandbits.result.void_excess" ) ); + hasSentMessage = true; + } + if ( !seenBits.contains( blk )) + { + seenBits.add( blk ); + } + } + } + + private static void spawnItem( + World world, + EntityItem ei ) + { + if ( world.isRemote ) // no spawning items on the client. + return; + + world.spawnEntityInWorld( ei ); + } +} diff --git a/src/main/java/mod/chiselsandbits/helpers/ModUtil.java b/src/main/java/mod/chiselsandbits/helpers/ModUtil.java index b0a86cd1..9d8c3209 100644 --- a/src/main/java/mod/chiselsandbits/helpers/ModUtil.java +++ b/src/main/java/mod/chiselsandbits/helpers/ModUtil.java @@ -19,18 +19,15 @@ import mod.chiselsandbits.integration.mcmultipart.MCMultipartProxy; import mod.chiselsandbits.integration.mods.LittleTiles; import mod.chiselsandbits.items.ItemBitBag; -import mod.chiselsandbits.items.ItemBitBag.BagPos; import mod.chiselsandbits.items.ItemChiseledBit; import mod.chiselsandbits.items.ItemNegativePrint; import mod.chiselsandbits.items.ItemPositivePrint; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; -import net.minecraft.init.SoundEvents; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; @@ -39,7 +36,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing.Axis; -import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; @@ -47,9 +43,6 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.EntityItemPickupEvent; -import net.minecraftforge.fml.common.eventhandler.Event.Result; public class ModUtil { @@ -361,94 +354,6 @@ public static void removeChisledBlock( world.markBlockRangeForRenderUpdate( pos, pos ); } - private final static Random itemRand = new Random(); - - public static void feedPlayer( - final World world, - final EntityPlayer player, - final EntityItem ei ) - { - ItemStack is = ModUtil.nonNull( ei.getEntityItem() ); - - final List bags = ItemBitBag.getBags( player.inventory ); - - if ( !containsAtLeastOneOf( player.inventory, is ) ) - { - final ItemStack minSize = is.copy(); - - if ( getStackSize( minSize ) > minSize.getMaxStackSize() ) - { - setStackSize( minSize, minSize.getMaxStackSize() ); - } - - adjustStackSize( is, -getStackSize( minSize ) ); - player.inventory.addItemStackToInventory( minSize ); - adjustStackSize( is, getStackSize( minSize ) ); - } - - for ( final BagPos bp : bags ) - { - is = bp.inv.insertItem( is ); - } - - if ( ModUtil.isEmpty( is ) ) - return; - - ei.setEntityItemStack( is ); - EntityItemPickupEvent event = new EntityItemPickupEvent( player, ei ); - - if ( MinecraftForge.EVENT_BUS.post( event ) ) - { - // canceled... - spawnItem( world, ei ); - } - else - { - if ( event.getResult() != Result.DENY ) - { - is = ei.getEntityItem(); - - if ( is != null && !player.inventory.addItemStackToInventory( is ) ) - { - ei.setEntityItemStack( is ); - //Never spawn the items for dropped excess items if setting is enabled. - if ( !ChiselsAndBits.getConfig().voidExcessBits ) - { - spawnItem( world, ei ); - } - } - else - { - if ( !ei.isSilent() ) - { - ei.worldObj.playSound( (EntityPlayer) null, ei.posX, ei.posY, ei.posZ, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, 0.2F, ( ( itemRand.nextFloat() - itemRand.nextFloat() ) * 0.7F + 1.0F ) * 2.0F ); - } - } - - player.inventory.markDirty(); - - if ( player.inventoryContainer != null ) - { - player.inventoryContainer.detectAndSendChanges(); - } - - } - else - spawnItem( world, ei ); - } - - } - - private static void spawnItem( - World world, - EntityItem ei ) - { - if ( world.isRemote ) // no spawning items on the client. - return; - - world.spawnEntityInWorld( ei ); - } - public static boolean containsAtLeastOneOf( final IInventory inv, final ItemStack is ) diff --git a/src/main/java/mod/chiselsandbits/items/ItemBitBag.java b/src/main/java/mod/chiselsandbits/items/ItemBitBag.java index b049301e..08fd0964 100644 --- a/src/main/java/mod/chiselsandbits/items/ItemBitBag.java +++ b/src/main/java/mod/chiselsandbits/items/ItemBitBag.java @@ -318,24 +318,4 @@ public double getDurabilityForDisplay( return 0; } - - public static boolean hasBagSpace( - final EntityPlayer player, - final int blk ) - { - final List bags = getBags( player.inventory ); - for ( final BagPos bp : bags ) - { - for ( int x = 0; x < bp.inv.getSizeInventory(); x++ ) - { - final ItemStack is = bp.inv.getStackInSlot( x ); - if( ( ItemChiseledBit.sameBit( is, blk ) && ModUtil.getStackSize( is ) < bp.inv.getInventoryStackLimit() ) || ModUtil.isEmpty( is ) ) - { - return true; - } - } - } - return false; - } - } diff --git a/src/main/java/mod/chiselsandbits/items/ItemChisel.java b/src/main/java/mod/chiselsandbits/items/ItemChisel.java index 1e80233e..4839aa6f 100644 --- a/src/main/java/mod/chiselsandbits/items/ItemChisel.java +++ b/src/main/java/mod/chiselsandbits/items/ItemChisel.java @@ -128,9 +128,6 @@ public boolean onBlockStartBreak( return ItemChisel.fromBreakToChisel( ChiselMode.castMode( ChiselModeManager.getChiselMode( player, ChiselToolType.CHISEL, EnumHand.MAIN_HAND ) ), itemstack, pos, player, EnumHand.MAIN_HAND ); } - //The previous stateId, avoids spamming the require_bag message. - private static BlockPos lastPos = new BlockPos(0, -1, 0); - static public boolean fromBreakToChisel( final ChiselMode mode, final ItemStack itemstack, @@ -139,21 +136,8 @@ static public boolean fromBreakToChisel( final EnumHand hand ) { final IBlockState state = player.getEntityWorld().getBlockState( pos ); - if ( ChiselsAndBits.getConfig().requireBagSpace && !player.isCreative() ) - { - //Cycle every item in any bag, if the player can't store the clicked block then - //send them a message. - final int stateId = ModUtil.getStateId( state ); - if ( !ItemBitBag.hasBagSpace( player, stateId ) ) - { - if( player.worldObj.isRemote && !pos.equals( lastPos ) ) - { - //Only client should handle messaging. - player.addChatMessage( new TextComponentTranslation( "mod.chiselsandbits.result.require_bag" ) ); - lastPos = pos; - } - return false; - } + if ( ItemChiseledBit.checkRequiredSpace( player, state ) ) { + return false; } if ( BlockBitInfo.canChisel( state ) || MCMultipartProxy.proxyMCMultiPart.isMultiPartTileEntity( player.getEntityWorld(), pos ) || LittleTiles.isLittleTilesBlock( player.getEntityWorld().getTileEntity( pos ) ) ) { diff --git a/src/main/java/mod/chiselsandbits/items/ItemChiseledBit.java b/src/main/java/mod/chiselsandbits/items/ItemChiseledBit.java index 9128cb46..91efb184 100644 --- a/src/main/java/mod/chiselsandbits/items/ItemChiseledBit.java +++ b/src/main/java/mod/chiselsandbits/items/ItemChiseledBit.java @@ -5,9 +5,12 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.concurrent.TimeUnit; import javax.annotation.Nonnull; +import com.google.common.base.Stopwatch; + import mod.chiselsandbits.bittank.BlockBitTank; import mod.chiselsandbits.chiseledblock.BlockBitInfo; import mod.chiselsandbits.chiseledblock.BlockChiseled; @@ -29,6 +32,7 @@ import mod.chiselsandbits.interfaces.ICacheClearable; import mod.chiselsandbits.interfaces.IChiselModeItem; import mod.chiselsandbits.interfaces.IItemScrollWheel; +import mod.chiselsandbits.items.ItemBitBag.BagPos; import mod.chiselsandbits.modes.ChiselMode; import mod.chiselsandbits.modes.IToolMode; import mod.chiselsandbits.network.NetworkRouter; @@ -51,6 +55,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.Vec3d; +import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; @@ -459,10 +464,22 @@ public static boolean placeBit( return false; } - public static boolean hasInventorySpace( + public static boolean hasBitSpace( final EntityPlayer player, final int blk ) { + final List bags = ItemBitBag.getBags( player.inventory ); + for ( final BagPos bp : bags ) + { + for ( int x = 0; x < bp.inv.getSizeInventory(); x++ ) + { + final ItemStack is = bp.inv.getStackInSlot( x ); + if( ( ItemChiseledBit.sameBit( is, blk ) && ModUtil.getStackSize( is ) < bp.inv.getInventoryStackLimit() ) || ModUtil.isEmpty( is ) ) + { + return true; + } + } + } for ( int x = 0; x < 36; x++ ) { final ItemStack is = player.inventory.getStackInSlot( x ); @@ -471,6 +488,31 @@ public static boolean hasInventorySpace( return true; } } - return ItemBitBag.hasBagSpace( player, blk ); + return false; + } + + private static Stopwatch timer; + + public static boolean checkRequiredSpace( + final EntityPlayer player, + final IBlockState blkstate) { + if ( ChiselsAndBits.getConfig().requireBagSpace && !player.isCreative() ) + { + //Cycle every item in any bag, if the player can't store the clicked block then + //send them a message. + final int stateId = ModUtil.getStateId( blkstate ); + if ( !ItemChiseledBit.hasBitSpace( player, stateId ) ) + { + if( player.worldObj.isRemote && ( timer == null || timer.elapsed( TimeUnit.MILLISECONDS ) > 1000 ) ) + { + //Timer is client-sided so it doesn't have to be made player-specific + timer = Stopwatch.createStarted(); + //Only client should handle messaging. + player.addChatMessage( new TextComponentTranslation( "mod.chiselsandbits.result.require_bag" ) ); + } + return true; + } + } + return false; } } diff --git a/src/main/java/mod/chiselsandbits/items/ItemNegativePrint.java b/src/main/java/mod/chiselsandbits/items/ItemNegativePrint.java index f697bebf..802fe88d 100644 --- a/src/main/java/mod/chiselsandbits/items/ItemNegativePrint.java +++ b/src/main/java/mod/chiselsandbits/items/ItemNegativePrint.java @@ -13,6 +13,7 @@ import mod.chiselsandbits.core.ChiselsAndBits; import mod.chiselsandbits.core.ClientSide; import mod.chiselsandbits.helpers.ActingPlayer; +import mod.chiselsandbits.helpers.BitInventoryFeeder; import mod.chiselsandbits.helpers.ContinousChisels; import mod.chiselsandbits.helpers.IContinuousInventory; import mod.chiselsandbits.helpers.LocalStrings; @@ -38,7 +39,6 @@ import net.minecraft.util.EnumFacing.Axis; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -151,6 +151,10 @@ public EnumActionResult onItemUse( final ItemStack stack = player.getHeldItem( hand ); final IBlockState blkstate = world.getBlockState( pos ); + if ( ItemChiseledBit.checkRequiredSpace( player, blkstate ) ) { + return EnumActionResult.FAIL; + } + if ( !player.canPlayerEdit( pos, side, stack ) || !world.isBlockModifiable( player, pos ) ) { return EnumActionResult.FAIL; @@ -300,32 +304,10 @@ protected void applyPrint( } } - //The state id of the last item in spawnlist. - int entityItemState = 0; - + BitInventoryFeeder feeder = new BitInventoryFeeder( who, world ); for ( final EntityItem ei : spawnlist ) { - ModUtil.feedPlayer( world, who, ei ); - entityItemState = ItemChiseledBit.getStackState( ei.getEntityItem() ); - } - - //entityItemState is always 0 when remote - if ( !world.isRemote && entityItemState != 0 ) - { - if( ChiselsAndBits.getConfig().requireBagSpace ) - { - if ( !ItemBitBag.hasBagSpace( who, entityItemState ) ) - { - who.addChatMessage( new TextComponentTranslation( "mod.chiselsandbits.result.require_bag_full" ) ); - } - } - else if( ChiselsAndBits.getConfig().voidExcessBits ) - { - if( !ItemChiseledBit.hasInventorySpace( who, entityItemState ) ) - { - who.addChatMessage( new TextComponentTranslation( "mod.chiselsandbits.result.void_excess" ) ); - } - } + feeder.addItem(ei); } } diff --git a/src/main/java/mod/chiselsandbits/items/ItemPositivePrint.java b/src/main/java/mod/chiselsandbits/items/ItemPositivePrint.java index 99d13814..84067ee7 100644 --- a/src/main/java/mod/chiselsandbits/items/ItemPositivePrint.java +++ b/src/main/java/mod/chiselsandbits/items/ItemPositivePrint.java @@ -14,6 +14,7 @@ import mod.chiselsandbits.core.ChiselsAndBits; import mod.chiselsandbits.core.ClientSide; import mod.chiselsandbits.helpers.ActingPlayer; +import mod.chiselsandbits.helpers.BitInventoryFeeder; import mod.chiselsandbits.helpers.ContinousChisels; import mod.chiselsandbits.helpers.IContinuousInventory; import mod.chiselsandbits.helpers.IItemInInventory; @@ -119,6 +120,11 @@ public EnumActionResult onItemUse( final float hitZ ) { final ItemStack stack = player.getHeldItem( hand ); + final IBlockState blkstate = world.getBlockState( pos ); + + if ( ItemChiseledBit.checkRequiredSpace( player, blkstate ) ) { + return EnumActionResult.FAIL; + } if ( PositivePatternMode.getMode( stack ) == PositivePatternMode.PLACEMENT ) { @@ -303,9 +309,10 @@ else if ( bit.isValid() ) } } + BitInventoryFeeder feeder = new BitInventoryFeeder( who, world ); for ( final EntityItem ei : spawnlist ) { - ModUtil.feedPlayer( world, who, ei ); + feeder.addItem(ei); ItemBitBag.cleanupInventory( who, ei.getEntityItem() ); } diff --git a/src/main/java/mod/chiselsandbits/network/packets/PacketChisel.java b/src/main/java/mod/chiselsandbits/network/packets/PacketChisel.java index cf41e578..dac4263e 100644 --- a/src/main/java/mod/chiselsandbits/network/packets/PacketChisel.java +++ b/src/main/java/mod/chiselsandbits/network/packets/PacketChisel.java @@ -12,6 +12,7 @@ import mod.chiselsandbits.client.UndoTracker; import mod.chiselsandbits.core.ChiselsAndBits; import mod.chiselsandbits.helpers.ActingPlayer; +import mod.chiselsandbits.helpers.BitInventoryFeeder; import mod.chiselsandbits.helpers.BitOperation; import mod.chiselsandbits.helpers.ContinousBits; import mod.chiselsandbits.helpers.ContinousChisels; @@ -35,7 +36,6 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; @@ -207,34 +207,12 @@ else if ( extracted != null ) } } } - - //The state id of the last item in spawnlist. - int entityItemState = 0; - + + BitInventoryFeeder feeder = new BitInventoryFeeder( who, world ); for ( final EntityItem ei : spawnlist ) { - ModUtil.feedPlayer( world, who, ei ); + feeder.addItem(ei); ItemBitBag.cleanupInventory( who, ei.getEntityItem() ); - entityItemState = ItemChiseledBit.getStackState( ei.getEntityItem() ); - } - - //entityItemState is always 0 when remote - if ( !world.isRemote && entityItemState != 0 ) - { - if( ChiselsAndBits.getConfig().requireBagSpace ) - { - if ( !ItemBitBag.hasBagSpace( who, entityItemState ) ) - { - who.addChatMessage( new TextComponentTranslation( "mod.chiselsandbits.result.require_bag_full" ) ); - } - } - else if( ChiselsAndBits.getConfig().voidExcessBits ) - { - if( !ItemChiseledBit.hasInventorySpace( who, entityItemState ) ) - { - who.addChatMessage( new TextComponentTranslation( "mod.chiselsandbits.result.void_excess" ) ); - } - } } if ( place.usesBits() ) diff --git a/src/main/java/mod/chiselsandbits/network/packets/PacketUndo.java b/src/main/java/mod/chiselsandbits/network/packets/PacketUndo.java index b54f1568..c2b8bdb0 100644 --- a/src/main/java/mod/chiselsandbits/network/packets/PacketUndo.java +++ b/src/main/java/mod/chiselsandbits/network/packets/PacketUndo.java @@ -17,6 +17,7 @@ import mod.chiselsandbits.helpers.IItemInInventory; import mod.chiselsandbits.helpers.InventoryBackup; import mod.chiselsandbits.helpers.ModUtil; +import mod.chiselsandbits.helpers.BitInventoryFeeder; import mod.chiselsandbits.items.ItemBitBag; import mod.chiselsandbits.items.ItemChisel; import mod.chiselsandbits.network.ModPacket; @@ -201,9 +202,10 @@ else if ( bit.isValid() ) if ( spawnItemsAndCommitWorldChanges ) { ba.commitChanges( true ); + BitInventoryFeeder feeder = new BitInventoryFeeder( player.getPlayer(), player.getWorld() ); for ( final EntityItem ei : spawnlist ) { - ModUtil.feedPlayer( player.getWorld(), player.getPlayer(), ei ); + feeder.addItem(ei); ItemBitBag.cleanupInventory( player.getPlayer(), ei.getEntityItem() ); } } diff --git a/src/main/resources/assets/chiselsandbits/lang/en_us.lang b/src/main/resources/assets/chiselsandbits/lang/en_us.lang index d0b0a3be..066723ad 100644 --- a/src/main/resources/assets/chiselsandbits/lang/en_us.lang +++ b/src/main/resources/assets/chiselsandbits/lang/en_us.lang @@ -70,8 +70,7 @@ mod.chiselsandbits.result.has_changed=Block has changed mod.chiselsandbits.result.missing_bits=Not enough bits or chisel durability! mod.chiselsandbits.result.nothing_to_undo=Nothing to Undo mod.chiselsandbits.result.nothing_to_redo=Nothing to Redo -mod.chiselsandbits.result.require_bag=You need a bag with empty slots before you can use the chisel! -mod.chiselsandbits.result.require_bag_full=Your bag has filled up! +mod.chiselsandbits.result.require_bag=You need empty slots in your inventory or a bag before you can use this item! mod.chiselsandbits.result.void_excess=Your inventory has filled up, any excess bits have been voided! mod.chiselsandbits.other.rotate.ccw=Rotate Held Counter Clockwise @@ -258,7 +257,7 @@ mod.chiselsandbits.config.enableVivecraftCompatibility=Enable Vivecraft Compatib mod.chiselsandbits.config.enableChiselCrafting=Enable Chiseling Blocks in Crafting Table mod.chiselsandbits.config.dynamicRenderFullChunksOnly=Dynamic Renderer Full Chunks Only mod.chiselsandbits.config.dynamicRenderFullChunksOnly.tooltip=Prevents Subdividing of dynamically rendered chunks into single blocks. This increases performance for most common cases ( chunks with a handful of complicated blocks ), but decreases performance for the worst cases ( chunks full of super complicated designs ). -mod.chiselsandbits.config.requireBagSpace=Require Bag Space -mod.chiselsandbits.config.requireBagSpace.tooltip=Requires there to be an empty slot in a bag in the player's inventory before allowing them to use the chisel. +mod.chiselsandbits.config.requireBagSpace=Require Inventory/Bag Space +mod.chiselsandbits.config.requireBagSpace.tooltip=Requires there to be an empty slot in a bag or in the player's inventory before allowing them to use the chisel. mod.chiselsandbits.config.voidExcessBits=Void Excess Bits mod.chiselsandbits.config.voidExcessBits.tooltip=Voids any bits that couldn't be fit into a bag or your inventory. Improves server performance. The undo action could have issues as some bits are voided. \ No newline at end of file diff --git a/src/main/resources/assets/chiselsandbits/lang/nl_nl.lang b/src/main/resources/assets/chiselsandbits/lang/nl_nl.lang new file mode 100644 index 00000000..268b03be --- /dev/null +++ b/src/main/resources/assets/chiselsandbits/lang/nl_nl.lang @@ -0,0 +1,263 @@ + +itemGroup.chiselsandbits=Chisels & Bits +itemGroup.chiselsandbits.Clipboard=Chisels & Bits Clipboard + +tile.mod.chiselsandbits.chiseled_wood.name=Gebeiteld Hout +tile.mod.chiselsandbits.chiseled_rock.name=Gebeiteld Steen +tile.mod.chiselsandbits.chiseled_iron.name=Gebeiteld Metaal +tile.mod.chiselsandbits.chiseled_cloth.name=Gebeiteld Doek +tile.mod.chiselsandbits.chiseled_glass.name=Gebeiteld Glas +tile.mod.chiselsandbits.chiseled_ice.name=Gebeiteld Ijs +tile.mod.chiselsandbits.chiseled_packedIce.name=Gebeiteld Pakijs +tile.mod.chiselsandbits.chiseled_clay.name=Gebeiteld Klei +tile.mod.chiselsandbits.chiseled_sand.name=Gebeiteld Zand +tile.mod.chiselsandbits.chiseled_ground.name=Gebeitelde Grond +tile.mod.chiselsandbits.chiseled_grass.name=Gebeiteld Gras +tile.mod.chiselsandbits.chiseled_snow.name=Gebeitelde Sneeuw +tile.mod.chiselsandbits.chiseled_fluid.name=Gebeitelde Vloeisof +tile.mod.chiselsandbits.chiseled_leaves.name=Gebeitelde Bladeren + +tile.mod.chiselsandbits.bittank.name=Bitbak + +item.mod.chiselsandbits.block_bit.name=Gebeitelde Bit +item.mod.chiselsandbits.bit_bag.name=Bitzak +item.mod.chiselsandbits.wrench_wood.name=Houten Moersleutel + +item.mod.chiselsandbits.positiveprint.name=Positief Beitelontwerp +item.mod.chiselsandbits.positiveprint_written.name=Positief Beitelontwerp - Beschreven +item.mod.chiselsandbits.negativeprint.name=Negatief Beitelontwerp +item.mod.chiselsandbits.negativeprint_written.name=Negatief Beitelontwerp - Beschreven +item.mod.chiselsandbits.mirrorprint.name=Gespiegeld Beitelontwerp +item.mod.chiselsandbits.mirrorprint_written.name=Gespiegeld Beitelontwerp - Beschreven + +item.mod.chiselsandbits.chisel_stone.name=Stenen Beitel +item.mod.chiselsandbits.chisel_iron.name=Iijzeren Beitel +item.mod.chiselsandbits.chisel_gold.name=Gouden Beitel +item.mod.chiselsandbits.chisel_diamond.name=Diamanten Beitel + +item.mod.chiselsandbits.bitsaw_diamond.name=Diamanten Bitzaag +item.mod.chiselsandbits.tape_measure.name=Rolmaat + +mod.chiselsandbits.chiselmode.single=Enkele Bit +mod.chiselsandbits.chiselmode.snap2=Raster Gebonden 1/8 Grootte Kubus +mod.chiselsandbits.chiselmode.snap4=Raster Gebonden 1/4 Grootte Kubus +mod.chiselsandbits.chiselmode.snap8=Raster Gebonden 1/2 Grootte Kubus +mod.chiselsandbits.chiselmode.line=Lijn +mod.chiselsandbits.chiselmode.plane=Vlak +mod.chiselsandbits.chiselmode.connected_plane=Verbonden vlak +mod.chiselsandbits.chiselmode.connected_material=Verbonden materiaal +mod.chiselsandbits.chiselmode.cube_small=Kleine Kubus +mod.chiselsandbits.chiselmode.cube_medium=Middelmatige Kubus +mod.chiselsandbits.chiselmode.cube_large=Grote kubus +mod.chiselsandbits.chiselmode.drawn_region=Teken regio +mod.chiselsandbits.chiselmode.same_material=Zelfde materiaal + +mod.chiselsandbits.bitoption.place=Plaats +mod.chiselsandbits.bitoption.replace=Vervang + +mod.chiselsandbits.positivepatternmode.replace=Vervang +mod.chiselsandbits.positivepatternmode.additive=Voeg toe +mod.chiselsandbits.positivepatternmode.placement=Plaatsen +mod.chiselsandbits.positivepatternmode.impose=Opleggen + +mod.chiselsandbits.tapemeasure.chatmsg=x: %s, y: %s, z: %s +mod.chiselsandbits.tapemeasure.bit=Bit +mod.chiselsandbits.tapemeasure.block=Blok +mod.chiselsandbits.tapemeasure.distance=Afstand + +mod.chiselsandbits.result.out_of_range=Te ver weg +mod.chiselsandbits.result.has_changed=Het blok is veranderd +mod.chiselsandbits.result.missing_bits=Niet genoeg bits of beitel duurzaamheid. +mod.chiselsandbits.result.nothing_to_undo=Niks om terug te draaien +mod.chiselsandbits.result.nothing_to_redo=Niks om opnieuw te doen +mod.chiselsandbits.result.require_bag=Je hebt lege plekken nodig in jou inventaris of een bitzak om dit item te kunnen gebruiken! +mod.chiselsandbits.result.void_excess=Je inventaris is vol, enige bits die niet erin pastte zijn mogelijk verdwenen. + +mod.chiselsandbits.other.rotate.ccw=Draai met de klok mee +mod.chiselsandbits.other.rotate.cw=Draai tegen de klok in +mod.chiselsandbits.other.mode=Radiaal Menu +mod.chiselsandbits.other.undo=Ongedaan maken +mod.chiselsandbits.other.redo=Opnieuw doen +mod.chiselsandbits.other.pickbit=Kies een bit +mod.chiselsandbits.other.add_to_clipboard=Zet blok op Clipboard + +mod.chiselsandbits.help.shiftdetails= +mod.chiselsandbits.help.empty=Leeg +mod.chiselsandbits.help.filled=Gevuld + +mod.chiselsandbits.help.chiseled_block={} om te plaatsen;{} om het raster te negeren;Scrol met het muiswiel om de draaiing te veranderen. +mod.chiselsandbits.help.bit_bag=Slaat bits op en vult deze automatisch aan in je inventaris +mod.chiselsandbits.help.wrench={} om blokken te draaien. +mod.chiselsandbits.help.bit={} om weg te halen;{} om te plaatsen;Gebruik {} om het menu te openen. +mod.chiselsandbits.help.positiveprint={} om te beschrijven;{} om te beitelen/plaatsen of te maken.;Scrol met het muiswiel om de draaiing te veranderen.;Gebruik {} om het menu te openen. +mod.chiselsandbits.help.negativeprint={} om te beschrijven;{} om te beitelen.;Scrol met het muiswiel om de draaiing te veranderen. +mod.chiselsandbits.help.mirrorprint={} de kant die je wilt spiegelen;Vervaardig met een positief/negatief ontwerp om over te zetten. +mod.chiselsandbits.help.chisel={} om te beitelen;Gebruik {} om het menu te openen. +mod.chiselsandbits.help.bitsaw=Vervaardig met blokken of gebeitelde blokken;Zaag met een van de 3 assen. +mod.chiselsandbits.help.bittank=Vul met een vloeistof en haal bits eruit. +mod.chiselsandbits.help.tape_measure=Druk op {} en sleep om te meten;{} + {} om te wissen;Gebruik {} om het menu te openen. + +mod.chiselsandbits.help.chiseled_block.long=Linkermuisklik om een blok te plaatsen. Sluip terwijl je een blok plaatst om het raster te negeren. Shift + Muiswiel om te wisselen tussen de mogelijke draaiingen. +mod.chiselsandbits.help.bit_bag.long=Vult automatisch bits in je inventaris bij, slaat bits op wanneer er al een stack in je inventaris zitten. +mod.chiselsandbits.help.wrench.long=Klik met de rechtermuisknop op een blok om hem te draaien rond de as waarnaar je kijkt op het blok. +mod.chiselsandbits.help.tape_measure.long=Druk op de linkermuisknop en sleep om plekken te meten. Sluip terwijl je hem gebruikt om vorige metingen te verwijderen. Gebruik het menu om te wisselen tussen verschillende modussen. +mod.chiselsandbits.help.bit.long=Klik op de linkermuisknop om een gebied te beitelen. Rechtermuisknop om daar te plaatsen. +mod.chiselsandbits.help.positiveprint.long=Rechtermuisklik op een blok om het ontwerp daar te schrijven. Rechtermuisknop op een blok om het te beitelen en bits te plaatsen/verwijderen om het ontwerp na te bootsen. Je kunt het ook vervaardigen met bits/bitzakken. Shift + Muiswiel om de draaiing te veranderen zonder te bewegen. +mod.chiselsandbits.help.negativeprint.long=Rechtermuisklik op een blok om het ontwerp daar te schrijven. Rechtermuisknop op een blok om het te beitelen en bits te verwijderen om het ontwerp na te bootsen. Je kunt het ook vervaardigen met bits/bitzakken. Shift + Muiswiel om de draaiing te veranderen zonder te bewegen. +mod.chiselsandbits.help.mirrorprint.long=Rechtermuisklik op een blokzijde om te spiegelen. Bijvoorbeeld, de oostkant zal hem spiegelen volgens de oost->west as. Vervaardig beschreven ontwerpen met een positief of negatief ontwerp om het gespiegelde plaatje te verplaatsen naar het soort ontwerp dat je wil. +mod.chiselsandbits.help.chisel.long=Linkermuisklik met enige compatibel blok om te beitelen. Rechtermuisklik om door de modussen te wisselen, je kunt ook met Shift + Muiswiel wisselen. +mod.chiselsandbits.help.bitsaw.long=Vervaardig deze zaag met compatibele blokken of symmetrische gebeitelde blokken om ze te halveren. De as waarop je zaagt hangt af van de relatieve plek in het vervaardigingsmenu. De X as is ernaast, de Y as erboven of onder en de Z as diagonaal. +mod.chiselsandbits.help.bittank.long=Rechtermuisklik met een emmer om vloeistoffen erin te doen of eruit te halen. Rechtermuisklik zonder een emmer om bits eruit te halen, Shift + Rechermuisklik doet bits in je hand, met een lege hand worden zoveel mogelijk bits erin gedaan. Je kunt automatisch met onder andere trechters bits eruit halen. + +mod.chiselsandbits.help.nobind=Geen toets gebonden +mod.chiselsandbits.help.leftshift=Linker Shift +mod.chiselsandbits.help.rightshift=Rechter Shift +mod.chiselsandbits.help.leftalt=Linker Alt +mod.chiselsandbits.help.rightalt=Rechter Alt +mod.chiselsandbits.help.trash=Verwijder inhoud van bitzak, houd een item vast om te filteren. +mod.chiselsandbits.help.trashitem=Verwijder alleen %s +mod.chiselsandbits.help.reallytrash=Klik nogmaals om te laten weten dat je zeker bent dat alles weg mag. +mod.chiselsandbits.help.reallytrash_blank=Klik nogmaals om te laten weten dat je zeker bent dat %s weg mag. +mod.chiselsandbits.help.trash.invalid=%s kan niet verwijderd worden. + +mod.chiselsandbits.pretty.axis-y=Omhoog/omlaag +mod.chiselsandbits.pretty.axis-x=Oost/West +mod.chiselsandbits.pretty.axis-z=Noord/Zuid + +mod.chiselsandbits.pretty.facing-up=Omhoog +mod.chiselsandbits.pretty.facing-down=Omlaag +mod.chiselsandbits.pretty.facing-east=Oost +mod.chiselsandbits.pretty.facing-west=West +mod.chiselsandbits.pretty.facing-north=Noord +mod.chiselsandbits.pretty.facing-south=Zuid + +chiselsandbits.color.white=Wit +chiselsandbits.color.orange=Oranje +chiselsandbits.color.magenta=Magenta +chiselsandbits.color.lightBlue=Licht Blauw +chiselsandbits.color.yellow=Geel +chiselsandbits.color.lime=Limoen +chiselsandbits.color.pink=Roze +chiselsandbits.color.gray=Grijs +chiselsandbits.color.silver=Zilver +chiselsandbits.color.cyan=Cyaan +chiselsandbits.color.purple=Paars +chiselsandbits.color.blue=Blauw +chiselsandbits.color.brown=Bruin +chiselsandbits.color.green=Groen +chiselsandbits.color.red=Rood +chiselsandbits.color.black=Zwart + +commands.setbit.usage=/setbit [dataValue] +commands.setbit.outOfWorld=Blok kan niet geplaatst buiten de wereld +commands.setbit.noChange=Bit kon niet geplaatst worden +commands.setbit.success=Bit geplaatst +commands.setbit.cannotChiselBlock=Blok kan niet worden gebeiteld +commands.setbit.invalidState=Verkeerde bit type +commands.setbit.spaceOccupied=Bit kon niet worden geplaatst, de ruimte is bezet + +mod.chiselsandbits.config.maxUndoLevel=Maximaal Undo niveau +mod.chiselsandbits.config.persistCreativeClipboard=Sla op/Laad Creative Clipboard Inhoud +mod.chiselsandbits.config.fluidBitsAreClickThrough=Klik door vloeistof bits. +mod.chiselsandbits.config.addBrokenBlocksToCreativeClipboard=Voeg gebroken bits toe aan Creative Clipboard +mod.chiselsandbits.config.creativeClipboardSize=Creative Clipboard Grootte +mod.chiselsandbits.config.creativeClipboardSize.tooltip=Aantal items dat in het creative clipboardk kan voordat ze verwijderd worden, 0 zet het uit. +mod.chiselsandbits.config.ShowBitsInJEI=Maak bits zichtbaar in JEI +mod.chiselsandbits.config.maxDrawnRegionSize=Maximale grootte voor getekende regios +mod.chiselsandbits.config.showUsage=Voeg hulpteksten toe aan de beschrijving van items +mod.chiselsandbits.config.invertBitBagFullness=Keer damage op de bitzak om. +mod.chiselsandbits.config.enableChiselMode_Plane=Zet modus aan - Vlak +mod.chiselsandbits.config.enableChiselMode_ConnectedPlane=Zet modus aan - Verbonden vlak +mod.chiselsandbits.config.enableChiselMode_ConnectedMaterial=Zet modus aan - Verbonden materiaal +mod.chiselsandbits.config.enableChiselMode_SameMaterial=Zet modus aan - Zelfde materiaal +mod.chiselsandbits.config.enableChiselMode_Line=Zet modus aan - Lijn +mod.chiselsandbits.config.enableChiselMode_SmallCube=Zet modus aan - Kleine Kubus +mod.chiselsandbits.config.enableChiselMode_LargeCube=Zet modus aan - Grote kubus +mod.chiselsandbits.config.enableChiselMode_MediumCube=Zet modus aan - Middelmatige Kubus +mod.chiselsandbits.config.enableChiselMode_DrawnRegion=Zet modus aan - Teken regio +mod.chiselsandbits.config.enableChiselMode_Snap2=Zet modus aan - Raster Gebonden 1/8 Grootte Kubus +mod.chiselsandbits.config.enableChiselMode_Snap4=Zet modus aan - Raster Gebonden 1/4 Grootte Kubus +mod.chiselsandbits.config.enableChiselMode_Snap8=Zet modus aan - Raster Gebonden 1/2 Grootte Kubus + +mod.chiselsandbits.config.enablePositivePatternMode_Additive=Zet modus aan - Voeg toe +mod.chiselsandbits.config.enablePositivePatternMode_Impose=Zet modus aan - Opleggen +mod.chiselsandbits.config.enablePositivePatternMode_Placement=Zet modus aan - Plaatsen +mod.chiselsandbits.config.enablePositivePatternMode_Replace=Zet modus aan - Vervang + +mod.chiselsandbits.config.enableTapeMeasure_Bit=Zet modus aan - Bit +mod.chiselsandbits.config.enableTapeMeasure_Block=Zet modus aan - Blok +mod.chiselsandbits.config.enableTapeMeasure_Distance=Zet modus aan - Afstand + +mod.chiselsandbits.config.enableToolbarIcons=Laat modus icoon voor de beitel zien in de toolbar +mod.chiselsandbits.config.perChiselMode=Sla geselecteerde modus op per beitel +mod.chiselsandbits.config.chatModeNotification=Laat modus veranderingen zien in de chat +mod.chiselsandbits.config.itemNameModeDisplay=Laat modus veranderingen zien met gereedschapsaanduiding +mod.chiselsandbits.config.dynamicModelFaceCount=Maximale aantal kanten voor statisch renderen +mod.chiselsandbits.config.dynamicModelFaceCount.tooltip=Modellen die complexer zijn dan dit zullen dynamisch worden gerenderd. +mod.chiselsandbits.config.dynamicModelRange=Maximale afstand voor dynamisch renderen +mod.chiselsandbits.config.dynamicModelRange.tooltip=Dynamisch gerenderde blokken buiten deze radius zullen niet gerenderd worden. +mod.chiselsandbits.config.dynamicModelMinimizeLatancy=Maak wachttijden voor dynamisch laden zo klein mogelijk +mod.chiselsandbits.config.dynamicModelMinimizeLatancy.tooltip=Uitzetten kan prestatie verbeteren maar verlaagt responsiviteit. +mod.chiselsandbits.config.dynamicMaxConcurrentTessalators=Maximaal nummer van gelijktijdige updates +mod.chiselsandbits.config.dynamicMaxConcurrentTessalators.tooltip=Als dit nummer wordt overschreden worden updates gepauseerd. +mod.chiselsandbits.config.damageTools=Gereedschappen verliezen duurzaamheid +mod.chiselsandbits.config.enablePositivePrintCrafting=Vervaardigen met positief ontwerp +mod.chiselsandbits.config.enablePositivePrintCrafting.tooltip=Het vervaaridgen van positieve ontwerpen met bits/zakken laat je blokken vervaardigen. +mod.chiselsandbits.config.enableStackableCrafting=Vervaardig gebeitelde blokken om draaiing te verwijderen +mod.chiselsandbits.config.enableStackableCrafting.tooltip=Je kunt dit gebruiken om hetzelfde ontwerp meerdere malen te plaatsen zonder de draaiing te verliezen. +mod.chiselsandbits.config.enableNegativePrintInversionCrafting=Keer negatieve ontwerpen om +mod.chiselsandbits.config.enableNegativePrintInversionCrafting.tooltip=Vervaardig een gevuld negatief design met een lege. +mod.chiselsandbits.config.enableBitBag=Zet Bitzak aan +mod.chiselsandbits.config.enableNegativePrint=Zet negatieve ontwerpen aan +mod.chiselsandbits.config.enablePositivePrint=Zet positeve ontwerpen aan +mod.chiselsandbits.config.enableMirrorPrint=Zet gespiegelde ontwerpen aan +mod.chiselsandbits.config.enableChisledBits=Zet gebeitelde bits aan +mod.chiselsandbits.config.enableStoneChisel=Zet steenen beitel aan +mod.chiselsandbits.config.enableIronChisel=Zet ijzeren beitel aan +mod.chiselsandbits.config.enableGoldChisel=Zet gouden beitel aan +mod.chiselsandbits.config.enableDiamondChisel=Zet diamanten beitel aan +mod.chiselsandbits.config.enableWoodenWrench=Zet houten moersleutel aan +mod.chiselsandbits.config.enableChiselToolHarvestCheck=Controleer gereedschapsniveau voor beitels +mod.chiselsandbits.config.enableChiselToolHarvestCheck.tooltip=Bijvoorbeeld, om obisidan te beitelen moet je beitel van diamant zijn. +mod.chiselsandbits.config.enableChiselToolHarvestCheckTools=Gereedschap types worden nagedaan door beitels +mod.chiselsandbits.config.enableToolHarvestLevels=Controleer gereedschapsniveau voor beitels bij het breken van het blok +mod.chiselsandbits.config.enableToolHarvestLevels.tooltip=Bijvoorbeeld, alleen voor het beitelen van het eerste stukje van een obsidian blok is een diamnten beitel nodig. +mod.chiselsandbits.config.enableBitLightSource=Gebeitelde blokken kunnen licht uitstralen +mod.chiselsandbits.config.enableBitLightSource.tooltip=Wanneer dit uit staat zullen gebeitelde blokken wel gloeien maar niet echt licht uistralen. +mod.chiselsandbits.config.bitLightPercentage=Percentage van blok voor maximale lichtsterkte +mod.chiselsandbits.config.compatabilityMode=Verbeter mod compatibilitieit +mod.chiselsandbits.config.enableAPITestingItem=Zet API testitem aan +mod.chiselsandbits.config.bagStackSize=Bitzak - Stapelgrootte +mod.chiselsandbits.config.bagStackSize.tooltip=Grootte van stacks in de bitzak: Minimaal 64, maximaal 99,999 +mod.chiselsandbits.config.stoneChiselUses=Stenen Beitel Duurzaamheid +mod.chiselsandbits.config.ironChiselUses=Ijzeren Beitel Duurzaamheid +mod.chiselsandbits.config.diamondChiselUses=Diamanten Beitel Duurzaamheid +mod.chiselsandbits.config.goldChiselUses=Gouden Beitel Duurzaamheid +mod.chiselsandbits.config.wrenchUses=Moersleutel Duurzaamheid +mod.chiselsandbits.config.disableCustomVertexFormats=Zet zelfgemaakte Vertex Formaten uit +mod.chiselsandbits.config.enableModelCompression=Druk Vertex data in het geheugen samen. +mod.chiselsandbits.config.useGetLightValue=Gebruik Get Light Value om de lichtsterkte van blokken te krijgen. +mod.chiselsandbits.config.enableFaceLightmapExtraction=Gebruik modelanalyse om de lichtsterkte van een blok te bepalen +mod.chiselsandbits.config.enableRightClickModeChange=Verander beitelmodus bij rechtermuisklik +mod.chiselsandbits.config.enableSetBitCommand=Zet /setbit commando aan +mod.chiselsandbits.config.maxMillisecondsPerBlock=Maximaal aantal milliseconden per blok +mod.chiselsandbits.config.maxMillisecondsUploadingPerFrame=Maximaal aantal milliseconden Uploading/Cycle +mod.chiselsandbits.config.maxTapeMeasures=Maximaal gebruiken van rolmaat +mod.chiselsandbits.config.displayMeasuringTapeInChat=Laat rolmaat in chat zien +mod.chiselsandbits.config.defaultToDynamicRenderer=Gebruik automatische dynamisch renderen +mod.chiselsandbits.config.forceDynamicRenderer=Zet statisch renderen uit +mod.chiselsandbits.config.useVBO=Gebruik VBOs +mod.chiselsandbits.config.defaultToDynamicRenderer.tooltip=Standaard gebruikt C&B de statische renderer en wisselt hij bij het updaten naar de dynamische renderer. Deze optie draait dat om; Na het uitrekenen van het detail van het model kan het wisselen naar de statische renderer, dit helpt bij complexe scenes die vastlopen met de statische renderer. +mod.chiselsandbits.config.forceDynamicRenderer.tooltip=Debug optie, zet de statische renderer helemaal uit. +mod.chiselsandbits.config.useVBO.tooltip=Gebruikt automatisch hetzelfde als Minecraft, maar kan worden veranderd. +mod.chiselsandbits.config.blacklistTickingBlocks=Zet tikkende blokken op de blacklist +mod.chiselsandbits.config.radialMenuVolume='Klik' volume voor radiaal menu. +mod.chiselsandbits.config.radialMenuVolume.tooltip=Als je dit naar 0 zet gaat het uit. +mod.chiselsandbits.config.enableVivecraftCompatibility=Zet Vivecraft compatibiliteit aan. +mod.chiselsandbits.config.enableChiselCrafting=Laat toe om blokken te beitelen in het vervaardigingsmenu +mod.chiselsandbits.config.dynamicRenderFullChunksOnly=Render alleen volledige chunks dynamisch +mod.chiselsandbits.config.dynamicRenderFullChunksOnly.tooltip=Zorgt ervoor dat dynamisch gerenderde chunks niet worden opverdeeld in enkele blokken. Dit verbeterd prestatie in de meeste gevallen ( chunks met slechts een paar complexe blokken ), maar verminderd prestatie in andere gevallen ( chunks met heel veel complexe blokken ). +mod.chiselsandbits.config.requireBagSpace=Vereis opslag ruimte voor bits +mod.chiselsandbits.config.requireBagSpace.tooltip=Met deze optie aan kun je alleen beitelen als je in je inventaris of bitzakken ruimte hebt voor de blokken die je aan het beitelen bent. +mod.chiselsandbits.config.voidExcessBits=Vernietig extra bits +mod.chiselsandbits.config.voidExcessBits.tooltip=Vernietigd enige bits die niet meer in je inventaris of bitzakken passen waardoor er nooit grote hopen met bits op de vloer komen. Verbeterd server prestatie. Kan problemen hebben met 'ongedaan maken' omdat bits worden vernietigd. \ No newline at end of file