mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-24 14:06:42 +01:00
Last Minute Patches
- Fixed Symmetry Wand taking blocks from the inventory inconsistently - Improved the replacer beams visual effects - Fixed hand bobbing on servers with latency - Fixed trees growing into bedrock again
This commit is contained in:
parent
903ad95bf0
commit
488c1a1374
7 changed files with 121 additions and 45 deletions
|
@ -19,6 +19,20 @@ public class BlockHelper {
|
||||||
if (needsTwo)
|
if (needsTwo)
|
||||||
amount *= 2;
|
amount *= 2;
|
||||||
|
|
||||||
|
{
|
||||||
|
// Try held Item first
|
||||||
|
int preferredSlot = player.inventory.currentItem;
|
||||||
|
ItemStack itemstack = player.inventory.getStackInSlot(preferredSlot);
|
||||||
|
int count = itemstack.getCount();
|
||||||
|
if (itemstack.getItem() == required && count > 0) {
|
||||||
|
int taken = Math.min(count, amount - amountFound);
|
||||||
|
player.inventory.setInventorySlotContents(preferredSlot,
|
||||||
|
new ItemStack(itemstack.getItem(), count - taken));
|
||||||
|
amountFound += taken;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Search inventory
|
||||||
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
|
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
|
||||||
if (amountFound == amount)
|
if (amountFound == amount)
|
||||||
break;
|
break;
|
||||||
|
@ -31,15 +45,14 @@ public class BlockHelper {
|
||||||
amountFound += taken;
|
amountFound += taken;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (needsTwo) {
|
if (needsTwo) {
|
||||||
// Give back 1 if uneven amount was removed
|
// Give back 1 if uneven amount was removed
|
||||||
if (amountFound % 2 != 0)
|
if (amountFound % 2 != 0)
|
||||||
player.inventory.addItemStackToInventory(new ItemStack(required));
|
player.inventory.addItemStackToInventory(new ItemStack(required));
|
||||||
amountFound /= 2;
|
amountFound /= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
return amountFound;
|
return amountFound;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class TreeFertilizerItem extends Item {
|
||||||
BlockPos actualPos = pos.add(saplingPos).down(10);
|
BlockPos actualPos = pos.add(saplingPos).down(10);
|
||||||
|
|
||||||
// Don't replace Bedrock
|
// Don't replace Bedrock
|
||||||
if (context.getWorld().getBlockState(pos).getBlockHardness(context.getWorld(), pos) == -1)
|
if (context.getWorld().getBlockState(actualPos).getBlockHardness(context.getWorld(), actualPos) == -1)
|
||||||
continue;
|
continue;
|
||||||
// Don't replace solid blocks with leaves
|
// Don't replace solid blocks with leaves
|
||||||
if (!world.getBlockState(pos).isNormalCube(world, pos)
|
if (!world.getBlockState(pos).isNormalCube(world, pos)
|
||||||
|
|
|
@ -18,17 +18,20 @@ public class BuilderGunBeamPacket {
|
||||||
public Vec3d start;
|
public Vec3d start;
|
||||||
public Vec3d target;
|
public Vec3d target;
|
||||||
public Hand hand;
|
public Hand hand;
|
||||||
|
public boolean self;
|
||||||
|
|
||||||
public BuilderGunBeamPacket(Vec3d start, Vec3d target, Hand hand) {
|
public BuilderGunBeamPacket(Vec3d start, Vec3d target, Hand hand, boolean self) {
|
||||||
this.start = start;
|
this.start = start;
|
||||||
this.target = target;
|
this.target = target;
|
||||||
this.hand = hand;
|
this.hand = hand;
|
||||||
|
this.self = self;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BuilderGunBeamPacket(PacketBuffer buffer) {
|
public BuilderGunBeamPacket(PacketBuffer buffer) {
|
||||||
start = new Vec3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble());
|
start = new Vec3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble());
|
||||||
target = new Vec3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble());
|
target = new Vec3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble());
|
||||||
hand = buffer.readBoolean()? Hand.MAIN_HAND : Hand.OFF_HAND;
|
hand = buffer.readBoolean()? Hand.MAIN_HAND : Hand.OFF_HAND;
|
||||||
|
self = buffer.readBoolean();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void toBytes(PacketBuffer buffer) {
|
public void toBytes(PacketBuffer buffer) {
|
||||||
|
@ -40,14 +43,19 @@ public class BuilderGunBeamPacket {
|
||||||
buffer.writeDouble(target.z);
|
buffer.writeDouble(target.z);
|
||||||
|
|
||||||
buffer.writeBoolean(hand == Hand.MAIN_HAND);
|
buffer.writeBoolean(hand == Hand.MAIN_HAND);
|
||||||
|
buffer.writeBoolean(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handle(Supplier<Context> context) {
|
public void handle(Supplier<Context> context) {
|
||||||
context.get().enqueueWork(() -> DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> {
|
context.get().enqueueWork(() -> DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> {
|
||||||
if (Minecraft.getInstance().player.getPositionVector().distanceTo(start) > 100)
|
if (Minecraft.getInstance().player.getPositionVector().distanceTo(start) > 100)
|
||||||
return;
|
return;
|
||||||
BuilderGunHandler.addBeam(new LaserBeam(start, target));
|
BuilderGunHandler.addBeam(new LaserBeam(start, target).followPlayer(self, hand == Hand.MAIN_HAND));
|
||||||
BuilderGunHandler.playSound(hand, new BlockPos(start));
|
|
||||||
|
if (self)
|
||||||
|
BuilderGunHandler.shoot(hand);
|
||||||
|
else
|
||||||
|
BuilderGunHandler.playSound(hand, new BlockPos(start));
|
||||||
}));
|
}));
|
||||||
context.get().setPacketHandled(true);
|
context.get().setPacketHandled(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@ package com.simibubi.create.modules.curiosities.placementHandgun;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
@ -49,16 +51,45 @@ public class BuilderGunHandler {
|
||||||
private static float lastLeftHandAnimation;
|
private static float lastLeftHandAnimation;
|
||||||
private static float lastRightHandAnimation;
|
private static float lastRightHandAnimation;
|
||||||
|
|
||||||
|
private static boolean dontReequipLeft;
|
||||||
|
private static boolean dontReequipRight;
|
||||||
|
|
||||||
public static class LaserBeam {
|
public static class LaserBeam {
|
||||||
float itensity;
|
float itensity;
|
||||||
Vec3d start;
|
Vec3d start;
|
||||||
Vec3d end;
|
Vec3d end;
|
||||||
|
boolean follow;
|
||||||
|
boolean mainHand;
|
||||||
|
|
||||||
public LaserBeam(Vec3d start, Vec3d end) {
|
public LaserBeam(Vec3d start, Vec3d end) {
|
||||||
this.start = start;
|
this.start = start;
|
||||||
this.end = end;
|
this.end = end;
|
||||||
itensity = 1;
|
itensity = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LaserBeam followPlayer(boolean follow, boolean mainHand) {
|
||||||
|
this.follow = follow;
|
||||||
|
this.mainHand = mainHand;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vec3d getStart() {
|
||||||
|
if (follow)
|
||||||
|
return getExactBarrelPos(mainHand);
|
||||||
|
return start;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Vec3d getExactBarrelPos(boolean mainHand) {
|
||||||
|
float partialTicks = Minecraft.getInstance().getRenderPartialTicks();
|
||||||
|
ClientPlayerEntity player = Minecraft.getInstance().player;
|
||||||
|
float yaw = (float) ((player.getYaw(partialTicks)) / -180 * Math.PI);
|
||||||
|
float pitch = (float) ((player.getPitch(partialTicks)) / -180 * Math.PI);
|
||||||
|
Vec3d barrelPosNoTransform = new Vec3d(mainHand == (player.getPrimaryHand() == HandSide.RIGHT) ? -.35f : .35f,
|
||||||
|
-0.1f, 1);
|
||||||
|
Vec3d barrelPos = player.getEyePosition(partialTicks)
|
||||||
|
.add(barrelPosNoTransform.rotatePitch(pitch).rotateYaw(yaw));
|
||||||
|
return barrelPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent(priority = EventPriority.HIGHEST)
|
@SubscribeEvent(priority = EventPriority.HIGHEST)
|
||||||
|
@ -106,7 +137,7 @@ public class BuilderGunHandler {
|
||||||
|
|
||||||
BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
|
BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
|
||||||
bufferBuilder.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
|
bufferBuilder.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
|
||||||
bufferBuilder.pos(beam.start.x, beam.start.y, beam.start.z).endVertex();
|
bufferBuilder.pos(beam.getStart().x, beam.getStart().y, beam.getStart().z).endVertex();
|
||||||
bufferBuilder.pos(beam.end.x, beam.end.y, beam.end.z).endVertex();
|
bufferBuilder.pos(beam.end.x, beam.end.y, beam.end.z).endVertex();
|
||||||
Tessellator.getInstance().draw();
|
Tessellator.getInstance().draw();
|
||||||
|
|
||||||
|
@ -119,10 +150,13 @@ public class BuilderGunHandler {
|
||||||
public static void shoot(Hand hand) {
|
public static void shoot(Hand hand) {
|
||||||
ClientPlayerEntity player = Minecraft.getInstance().player;
|
ClientPlayerEntity player = Minecraft.getInstance().player;
|
||||||
boolean rightHand = hand == Hand.MAIN_HAND ^ player.getPrimaryHand() == HandSide.LEFT;
|
boolean rightHand = hand == Hand.MAIN_HAND ^ player.getPrimaryHand() == HandSide.LEFT;
|
||||||
if (rightHand)
|
if (rightHand) {
|
||||||
rightHandAnimation = .2f;
|
rightHandAnimation = .2f;
|
||||||
else
|
dontReequipRight = false;
|
||||||
|
} else {
|
||||||
leftHandAnimation = .2f;
|
leftHandAnimation = .2f;
|
||||||
|
dontReequipLeft = false;
|
||||||
|
}
|
||||||
playSound(hand, player.getPosition());
|
playSound(hand, player.getPosition());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,15 +167,22 @@ public class BuilderGunHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addBeam(LaserBeam beam) {
|
public static void addBeam(LaserBeam beam) {
|
||||||
Vec3d step = beam.end.subtract(beam.start).normalize();
|
Random r = new Random();
|
||||||
int steps = (int) (beam.end.squareDistanceTo(beam.start) / step.lengthSquared());
|
double x = beam.end.x;
|
||||||
for (int i = 0; i <= steps; i++) {
|
double y = beam.end.y;
|
||||||
Vec3d pos = beam.start.add(step.scale(i));
|
double z = beam.end.z;
|
||||||
Minecraft.getInstance().world.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, 0, -15000, 0);
|
ClientWorld world = Minecraft.getInstance().world;
|
||||||
|
Supplier<Double> randomSpeed = () -> (r.nextDouble() - .5d) * .2f;
|
||||||
|
Supplier<Double> randomOffset = () -> (r.nextDouble() - .5d) * .2f;
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
world.addParticle(ParticleTypes.END_ROD, x, y, z, randomSpeed.get(), randomSpeed.get(), randomSpeed.get());
|
||||||
|
world.addParticle(ParticleTypes.FIREWORK, x + randomOffset.get(), y + randomOffset.get(),
|
||||||
|
z + randomOffset.get(), 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
cachedBeams.add(beam);
|
cachedBeams.add(beam);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onRenderPlayerHand(RenderSpecificHandEvent event) {
|
public static void onRenderPlayerHand(RenderSpecificHandEvent event) {
|
||||||
if (AllItems.PLACEMENT_HANDGUN.typeOf(event.getItemStack())) {
|
if (AllItems.PLACEMENT_HANDGUN.typeOf(event.getItemStack())) {
|
||||||
|
@ -156,9 +197,9 @@ public class BuilderGunHandler {
|
||||||
|
|
||||||
float equipProgress = event.getEquipProgress();
|
float equipProgress = event.getEquipProgress();
|
||||||
|
|
||||||
if (rightHand && rightHandAnimation > .01f)
|
if (rightHand && (rightHandAnimation > .01f || dontReequipRight))
|
||||||
equipProgress = 0;
|
equipProgress = 0;
|
||||||
if (!rightHand && leftHandAnimation > .01f)
|
if (!rightHand && (leftHandAnimation > .01f || dontReequipLeft))
|
||||||
equipProgress = 0;
|
equipProgress = 0;
|
||||||
|
|
||||||
// Render arm
|
// Render arm
|
||||||
|
@ -212,5 +253,11 @@ public class BuilderGunHandler {
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void dontAnimateItem(Hand hand) {
|
||||||
|
boolean rightHand = hand == Hand.MAIN_HAND ^ Minecraft.getInstance().player.getPrimaryHand() == HandSide.LEFT;
|
||||||
|
dontReequipRight |= rightHand;
|
||||||
|
dontReequipLeft |= !rightHand;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ import com.simibubi.create.Create;
|
||||||
import com.simibubi.create.foundation.gui.ScreenOpener;
|
import com.simibubi.create.foundation.gui.ScreenOpener;
|
||||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||||
import com.simibubi.create.foundation.utility.KeyboardHelper;
|
import com.simibubi.create.foundation.utility.KeyboardHelper;
|
||||||
import com.simibubi.create.modules.curiosities.placementHandgun.BuilderGunHandler.LaserBeam;
|
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
|
@ -23,6 +22,7 @@ import net.minecraft.client.util.ITooltipFlag;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
import net.minecraft.fluid.IFluidState;
|
import net.minecraft.fluid.IFluidState;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemGroup;
|
import net.minecraft.item.ItemGroup;
|
||||||
|
@ -38,6 +38,7 @@ import net.minecraft.util.ActionResult;
|
||||||
import net.minecraft.util.ActionResultType;
|
import net.minecraft.util.ActionResultType;
|
||||||
import net.minecraft.util.Direction;
|
import net.minecraft.util.Direction;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
|
import net.minecraft.util.HandSide;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.NonNullList;
|
||||||
import net.minecraft.util.SoundCategory;
|
import net.minecraft.util.SoundCategory;
|
||||||
import net.minecraft.util.SoundEvents;
|
import net.minecraft.util.SoundEvents;
|
||||||
|
@ -207,29 +208,30 @@ public class BuilderGunItem extends Item {
|
||||||
// Find exact position of gun barrel for VFX
|
// Find exact position of gun barrel for VFX
|
||||||
float yaw = (float) ((player.rotationYaw) / -180 * Math.PI);
|
float yaw = (float) ((player.rotationYaw) / -180 * Math.PI);
|
||||||
float pitch = (float) ((player.rotationPitch) / -180 * Math.PI);
|
float pitch = (float) ((player.rotationPitch) / -180 * Math.PI);
|
||||||
Vec3d barrelPosNoTransform = new Vec3d(mainHand ? -.35f : .35f, -0.1f, 1);
|
Vec3d barrelPosNoTransform = new Vec3d(mainHand == (player.getPrimaryHand() == HandSide.RIGHT) ? -.35f : .35f, -0.1f, 1);
|
||||||
Vec3d barrelPos = start.add(barrelPosNoTransform.rotatePitch(pitch).rotateYaw(yaw));
|
Vec3d barrelPos = start.add(barrelPosNoTransform.rotatePitch(pitch).rotateYaw(yaw));
|
||||||
|
|
||||||
// Client side - Shoot visual laser
|
// Client side - Shoot visual laser
|
||||||
if (world.isRemote) {
|
if (world.isRemote) {
|
||||||
BuilderGunHandler.addBeam(new LaserBeam(barrelPos, raytrace.getHitVec()));
|
// BuilderGunHandler.addBeam(new LaserBeam(barrelPos, raytrace.getHitVec()));
|
||||||
|
//
|
||||||
if (getTier(Components.Amplifier, item) == ComponentTier.BlazeBrass) {
|
// if (getTier(Components.Amplifier, item) == ComponentTier.BlazeBrass) {
|
||||||
BuilderGunHandler.addBeam(new LaserBeam(
|
// BuilderGunHandler.addBeam(new LaserBeam(
|
||||||
start.add(barrelPosNoTransform.add(-.09f, -.08f, 0).rotatePitch(pitch).rotateYaw(yaw)),
|
// start.add(barrelPosNoTransform.add(-.09f, -.08f, 0).rotatePitch(pitch).rotateYaw(yaw)),
|
||||||
raytrace.getHitVec()));
|
// raytrace.getHitVec()));
|
||||||
}
|
// }
|
||||||
if (getTier(Components.Amplifier, item) == ComponentTier.ChorusChrome) {
|
// if (getTier(Components.Amplifier, item) == ComponentTier.ChorusChrome) {
|
||||||
BuilderGunHandler.addBeam(new LaserBeam(
|
// BuilderGunHandler.addBeam(new LaserBeam(
|
||||||
start.add(barrelPosNoTransform.add(-.09f, -.08f, 0).rotatePitch(pitch).rotateYaw(yaw)),
|
// start.add(barrelPosNoTransform.add(-.09f, -.08f, 0).rotatePitch(pitch).rotateYaw(yaw)),
|
||||||
raytrace.getHitVec()));
|
// raytrace.getHitVec()));
|
||||||
BuilderGunHandler.addBeam(new LaserBeam(
|
// BuilderGunHandler.addBeam(new LaserBeam(
|
||||||
start.add(barrelPosNoTransform.add(.09f, -.08f, 0).rotatePitch(pitch).rotateYaw(yaw)),
|
// start.add(barrelPosNoTransform.add(.09f, -.08f, 0).rotatePitch(pitch).rotateYaw(yaw)),
|
||||||
raytrace.getHitVec()));
|
// raytrace.getHitVec()));
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
BuilderGunHandler.shoot(hand);
|
// BuilderGunHandler.shoot(hand);
|
||||||
applyCooldown(player, item, gunInOtherHand);
|
// applyCooldown(player, item, gunInOtherHand);
|
||||||
|
BuilderGunHandler.dontAnimateItem(hand);
|
||||||
return new ActionResult<ItemStack>(ActionResultType.SUCCESS, item);
|
return new ActionResult<ItemStack>(ActionResultType.SUCCESS, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,7 +270,9 @@ public class BuilderGunItem extends Item {
|
||||||
|
|
||||||
applyCooldown(player, item, gunInOtherHand);
|
applyCooldown(player, item, gunInOtherHand);
|
||||||
AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> player),
|
AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> player),
|
||||||
new BuilderGunBeamPacket(barrelPos, raytrace.getHitVec(), hand));
|
new BuilderGunBeamPacket(barrelPos, raytrace.getHitVec(), hand, false));
|
||||||
|
AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) player),
|
||||||
|
new BuilderGunBeamPacket(barrelPos, raytrace.getHitVec(), hand, true));
|
||||||
|
|
||||||
return new ActionResult<ItemStack>(ActionResultType.SUCCESS, item);
|
return new ActionResult<ItemStack>(ActionResultType.SUCCESS, item);
|
||||||
|
|
||||||
|
@ -316,6 +320,8 @@ public class BuilderGunItem extends Item {
|
||||||
return true;
|
return true;
|
||||||
if (newState.has(BlockStateProperties.STAIRS_SHAPE))
|
if (newState.has(BlockStateProperties.STAIRS_SHAPE))
|
||||||
newState = newState.with(BlockStateProperties.STAIRS_SHAPE, StairsShape.STRAIGHT);
|
newState = newState.with(BlockStateProperties.STAIRS_SHAPE, StairsShape.STRAIGHT);
|
||||||
|
if (newState.has(BlockStateProperties.PERSISTENT))
|
||||||
|
newState = newState.with(BlockStateProperties.PERSISTENT, true);
|
||||||
|
|
||||||
if (stack.getTag().contains("BlockUsed")
|
if (stack.getTag().contains("BlockUsed")
|
||||||
&& NBTUtil.readBlockState(stack.getTag().getCompound("BlockUsed")) == newState)
|
&& NBTUtil.readBlockState(stack.getTag().getCompound("BlockUsed")) == newState)
|
||||||
|
@ -495,9 +501,9 @@ public class BuilderGunItem extends Item {
|
||||||
public static int getCooldownDelay(ItemStack stack) {
|
public static int getCooldownDelay(ItemStack stack) {
|
||||||
ComponentTier tier = getTier(Components.Accelerator, stack);
|
ComponentTier tier = getTier(Components.Accelerator, stack);
|
||||||
if (tier == ComponentTier.None)
|
if (tier == ComponentTier.None)
|
||||||
return 8;
|
return 10;
|
||||||
if (tier == ComponentTier.BlazeBrass)
|
if (tier == ComponentTier.BlazeBrass)
|
||||||
return 5;
|
return 6;
|
||||||
if (tier == ComponentTier.ChorusChrome)
|
if (tier == ComponentTier.ChorusChrome)
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
|
|
|
@ -173,7 +173,7 @@ public class BuilderGunScreen extends AbstractSimiScreen {
|
||||||
int j = topLeftY;
|
int j = topLeftY;
|
||||||
ScreenResources.PLACEMENT_GUN.draw(this, i, j);
|
ScreenResources.PLACEMENT_GUN.draw(this, i, j);
|
||||||
|
|
||||||
font.drawStringWithShadow("Placement Handgun", i + 8, j + 10, 0xCCDDFF);
|
font.drawStringWithShadow("Handheld Blockzapper", i + 8, j + 10, 0xCCDDFF);
|
||||||
font.drawString("Patterns", i + 148, j + 11, ScreenResources.FONT_COLOR);
|
font.drawString("Patterns", i + 148, j + 11, ScreenResources.FONT_COLOR);
|
||||||
|
|
||||||
minecraft.getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
minecraft.getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
||||||
|
|
|
@ -194,6 +194,8 @@ public class SymmetryWandItem extends Item {
|
||||||
Vec3d mirrorPos = symmetry.getPosition();
|
Vec3d mirrorPos = symmetry.getPosition();
|
||||||
if (mirrorPos.distanceTo(new Vec3d(pos)) > 50)
|
if (mirrorPos.distanceTo(new Vec3d(pos)) > 50)
|
||||||
return;
|
return;
|
||||||
|
if (!player.isCreative() && BlockHelper.findAndRemoveInInventory(block, player, 1) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
symmetry.process(blockSet);
|
symmetry.process(blockSet);
|
||||||
BlockPos to = new BlockPos(mirrorPos);
|
BlockPos to = new BlockPos(mirrorPos);
|
||||||
|
@ -203,7 +205,7 @@ public class SymmetryWandItem extends Item {
|
||||||
for (BlockPos position : blockSet.keySet()) {
|
for (BlockPos position : blockSet.keySet()) {
|
||||||
if (position.equals(pos))
|
if (position.equals(pos))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (world.func_217350_a(block, position, ISelectionContext.forEntity(player))) {
|
if (world.func_217350_a(block, position, ISelectionContext.forEntity(player))) {
|
||||||
BlockState blockState = blockSet.get(position);
|
BlockState blockState = blockSet.get(position);
|
||||||
for (Direction face : Direction.values())
|
for (Direction face : Direction.values())
|
||||||
|
@ -223,7 +225,7 @@ public class SymmetryWandItem extends Item {
|
||||||
continue;
|
continue;
|
||||||
if (BlockHelper.findAndRemoveInInventory(blockState, player, 1) == 0)
|
if (BlockHelper.findAndRemoveInInventory(blockState, player, 1) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
world.setBlockState(position, blockState);
|
world.setBlockState(position, blockState);
|
||||||
targets.add(position);
|
targets.add(position);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue