From 7321d1af0105c470a4cd99e5675e8ff7989e06bd Mon Sep 17 00:00:00 2001 From: Christian Knaapen Date: Wed, 6 Feb 2019 03:53:25 +0100 Subject: [PATCH] Updated forge. Tweaked shader. Cancel build mode with esc, e, leftclick. Added breaking blocks with buildmodes. --- build.gradle | 4 +- .../EffortlessBuilding.java | 7 ++- .../buildmode/BuildModes.java | 7 ++- .../helper/RenderHelper.java | 9 +++- .../item/ItemRandomizerBag.java | 6 +-- .../item/ItemReachUpgrade1.java | 6 +-- .../item/ItemReachUpgrade2.java | 6 +-- .../item/ItemReachUpgrade3.java | 6 +-- .../network/BlockBrokenMessage.java | 2 +- .../network/BlockPlacedMessage.java | 2 +- .../network/CancelModeMessage.java | 42 ++++++++++++++++++ .../effortlessbuilding/proxy/ClientProxy.java | 29 ++++++++---- .../effortlessbuilding/shaders/dissolve.frag | 25 ++++++++--- .../textures/gui/container/randomizerbag.png | Bin 1218 -> 1218 bytes .../textures/items/randomizerbag.png | Bin 376 -> 394 bytes 15 files changed, 113 insertions(+), 38 deletions(-) create mode 100644 src/main/java/nl/requios/effortlessbuilding/network/CancelModeMessage.java diff --git a/build.gradle b/build.gradle index 0a8161c..01cc97b 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ compileJava { } minecraft { - version = "1.12.2-14.23.4.2705" + version = "1.12.2-14.23.5.2768" runDir = "run" // the mappings can be changed at any time, and must be in the following format. @@ -29,7 +29,7 @@ minecraft { // stable_# stables are built at the discretion of the MCP team. // Use non-default mappings at your own risk. they may not always work. // simply re-run your setup task after changing the mappings to update your workspace. - mappings = "snapshot_20171003" + mappings = "stable_39" // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. } diff --git a/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java b/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java index 4b5f7ae..c6abd20 100644 --- a/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java +++ b/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java @@ -25,10 +25,7 @@ import nl.requios.effortlessbuilding.item.ItemRandomizerBag; import nl.requios.effortlessbuilding.item.ItemReachUpgrade1; import nl.requios.effortlessbuilding.item.ItemReachUpgrade2; import nl.requios.effortlessbuilding.item.ItemReachUpgrade3; -import nl.requios.effortlessbuilding.network.BlockBrokenMessage; -import nl.requios.effortlessbuilding.network.BlockPlacedMessage; -import nl.requios.effortlessbuilding.network.ModeSettingsMessage; -import nl.requios.effortlessbuilding.network.ModifierSettingsMessage; +import nl.requios.effortlessbuilding.network.*; import nl.requios.effortlessbuilding.proxy.IProxy; import org.apache.logging.log4j.Logger; @@ -90,6 +87,8 @@ public class EffortlessBuilding EffortlessBuilding.packetHandler.registerMessage(BlockBrokenMessage.MessageHandler.class, BlockBrokenMessage.class, 3, Side.SERVER); + EffortlessBuilding.packetHandler.registerMessage(CancelModeMessage.MessageHandler.class, CancelModeMessage.class, 4, Side.SERVER); + proxy.preInit(event); } diff --git a/src/main/java/nl/requios/effortlessbuilding/buildmode/BuildModes.java b/src/main/java/nl/requios/effortlessbuilding/buildmode/BuildModes.java index a473b04..dbb063b 100644 --- a/src/main/java/nl/requios/effortlessbuilding/buildmode/BuildModes.java +++ b/src/main/java/nl/requios/effortlessbuilding/buildmode/BuildModes.java @@ -108,15 +108,18 @@ public class BuildModes { public static void onBlockBroken(BlockEvent.BreakEvent event) { World world = event.getWorld(); + EntityPlayer player = event.getPlayer(); BlockPos pos = event.getPos(); if (world.isRemote) return; //get coordinates - List coordinates = findCoordinates(event.getPlayer(), pos); + ModeSettingsManager.ModeSettings modeSettings = ModeSettingsManager.getModeSettings(player); + BuildModeEnum buildMode = modeSettings.getBuildMode(); + List coordinates = buildMode.instance.onRightClick(player, pos, EnumFacing.UP, Vec3d.ZERO); //let buildmodifiers break blocks - BuildModifiers.onBlockBroken(event.getPlayer(), coordinates); + BuildModifiers.onBlockBroken(player, coordinates); } public static List findCoordinates(EntityPlayer player, BlockPos startPos) { diff --git a/src/main/java/nl/requios/effortlessbuilding/helper/RenderHelper.java b/src/main/java/nl/requios/effortlessbuilding/helper/RenderHelper.java index 7937e9d..361319c 100644 --- a/src/main/java/nl/requios/effortlessbuilding/helper/RenderHelper.java +++ b/src/main/java/nl/requios/effortlessbuilding/helper/RenderHelper.java @@ -262,6 +262,13 @@ public class RenderHelper implements IWorldEventListener { //get coordinates List startCoordinates = BuildModes.findCoordinates(player, startPos); + BlockPos firstPos = BlockPos.ORIGIN, secondPos = BlockPos.ORIGIN; + //remember first and last pos for highlighting + if (!startCoordinates.isEmpty()) { + firstPos = startCoordinates.get(0); + secondPos = startCoordinates.get(startCoordinates.size() - 1); + } + //Limit number of blocks you can place int limit = ReachHelper.getMaxBlocksPlacedAtOnce(player); if (startCoordinates.size() > limit) { @@ -300,7 +307,7 @@ public class RenderHelper implements IWorldEventListener { SurvivalHelper.mayPlace(player.world, Block.getBlockFromItem(itemstack.getItem()), blockState, blockPos, true, EnumFacing.UP, player) && SurvivalHelper.canReplace(player.world, player, blockPos)) { - ShaderHelper.useShader(ShaderHelper.psiBar, generateCallback(percentile, new Vec3d(blockPos), i == 0 || i == newCoordinates.size() - 1)); + ShaderHelper.useShader(ShaderHelper.psiBar, generateCallback(percentile, new Vec3d(blockPos), /*blockPos == firstPos ||*/ blockPos == secondPos)); renderBlockPreview(dispatcher, blockPos, blockState); } } diff --git a/src/main/java/nl/requios/effortlessbuilding/item/ItemRandomizerBag.java b/src/main/java/nl/requios/effortlessbuilding/item/ItemRandomizerBag.java index 627e2fb..1bfbcc2 100644 --- a/src/main/java/nl/requios/effortlessbuilding/item/ItemRandomizerBag.java +++ b/src/main/java/nl/requios/effortlessbuilding/item/ItemRandomizerBag.java @@ -36,7 +36,7 @@ public class ItemRandomizerBag extends Item { public ItemRandomizerBag() { this.setRegistryName(EffortlessBuilding.MODID, "randomizer_bag"); - this.setUnlocalizedName(this.getRegistryName().toString()); + this.setTranslationKey(this.getRegistryName().toString()); this.maxStackSize = 1; this.setCreativeTab(CreativeTabs.TOOLS); @@ -181,8 +181,8 @@ public class ItemRandomizerBag extends Item { } @Override - public String getUnlocalizedName() { - return super.getUnlocalizedName(); + public String getTranslationKey() { + return super.getTranslationKey(); } public static void resetRandomness() { diff --git a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade1.java b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade1.java index be43a90..3bf716d 100644 --- a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade1.java +++ b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade1.java @@ -21,7 +21,7 @@ public class ItemReachUpgrade1 extends Item { public ItemReachUpgrade1() { this.setRegistryName(EffortlessBuilding.MODID, "reach_upgrade1"); - this.setUnlocalizedName(this.getRegistryName().toString()); + this.setTranslationKey(this.getRegistryName().toString()); this.maxStackSize = 1; this.setCreativeTab(CreativeTabs.TOOLS); @@ -67,7 +67,7 @@ public class ItemReachUpgrade1 extends Item { } @Override - public String getUnlocalizedName() { - return super.getUnlocalizedName(); + public String getTranslationKey() { + return super.getTranslationKey(); } } diff --git a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade2.java b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade2.java index 3b3215e..c4fd156 100644 --- a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade2.java +++ b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade2.java @@ -20,7 +20,7 @@ public class ItemReachUpgrade2 extends Item { public ItemReachUpgrade2() { this.setRegistryName(EffortlessBuilding.MODID, "reach_upgrade2"); - this.setUnlocalizedName(this.getRegistryName().toString()); + this.setTranslationKey(this.getRegistryName().toString()); this.maxStackSize = 1; this.setCreativeTab(CreativeTabs.TOOLS); @@ -65,7 +65,7 @@ public class ItemReachUpgrade2 extends Item { } @Override - public String getUnlocalizedName() { - return super.getUnlocalizedName(); + public String getTranslationKey() { + return super.getTranslationKey(); } } diff --git a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade3.java b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade3.java index 0a24a60..47bc9e8 100644 --- a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade3.java +++ b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade3.java @@ -20,7 +20,7 @@ public class ItemReachUpgrade3 extends Item { public ItemReachUpgrade3() { this.setRegistryName(EffortlessBuilding.MODID, "reach_upgrade3"); - this.setUnlocalizedName(this.getRegistryName().toString()); + this.setTranslationKey(this.getRegistryName().toString()); this.maxStackSize = 1; this.setCreativeTab(CreativeTabs.TOOLS); @@ -68,7 +68,7 @@ public class ItemReachUpgrade3 extends Item { } @Override - public String getUnlocalizedName() { - return super.getUnlocalizedName(); + public String getTranslationKey() { + return super.getTranslationKey(); } } diff --git a/src/main/java/nl/requios/effortlessbuilding/network/BlockBrokenMessage.java b/src/main/java/nl/requios/effortlessbuilding/network/BlockBrokenMessage.java index d44cc3c..48144a5 100644 --- a/src/main/java/nl/requios/effortlessbuilding/network/BlockBrokenMessage.java +++ b/src/main/java/nl/requios/effortlessbuilding/network/BlockBrokenMessage.java @@ -66,7 +66,7 @@ public class BlockBrokenMessage implements IMessage { public void fromBytes(ByteBuf buf) { blockHit = buf.readBoolean(); blockPos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt()); - sideHit = EnumFacing.getFront(buf.readInt()); + sideHit = EnumFacing.byIndex(buf.readInt()); hitVec = new Vec3d(buf.readDouble(), buf.readDouble(), buf.readDouble()); } diff --git a/src/main/java/nl/requios/effortlessbuilding/network/BlockPlacedMessage.java b/src/main/java/nl/requios/effortlessbuilding/network/BlockPlacedMessage.java index decfd30..35315cc 100644 --- a/src/main/java/nl/requios/effortlessbuilding/network/BlockPlacedMessage.java +++ b/src/main/java/nl/requios/effortlessbuilding/network/BlockPlacedMessage.java @@ -67,7 +67,7 @@ public class BlockPlacedMessage implements IMessage { public void fromBytes(ByteBuf buf) { blockHit = buf.readBoolean(); blockPos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt()); - sideHit = EnumFacing.getFront(buf.readInt()); + sideHit = EnumFacing.byIndex(buf.readInt()); hitVec = new Vec3d(buf.readDouble(), buf.readDouble(), buf.readDouble()); } diff --git a/src/main/java/nl/requios/effortlessbuilding/network/CancelModeMessage.java b/src/main/java/nl/requios/effortlessbuilding/network/CancelModeMessage.java new file mode 100644 index 0000000..c3c62d1 --- /dev/null +++ b/src/main/java/nl/requios/effortlessbuilding/network/CancelModeMessage.java @@ -0,0 +1,42 @@ +package nl.requios.effortlessbuilding.network; + +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.IThreadListener; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; +import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; +import nl.requios.effortlessbuilding.EffortlessBuilding; +import nl.requios.effortlessbuilding.buildmode.BuildModes; + +public class CancelModeMessage implements IMessage { + + @Override + public void toBytes(ByteBuf buf) { + + } + + @Override + public void fromBytes(ByteBuf buf) { + + } + + // The params of the IMessageHandler are + public static class MessageHandler implements IMessageHandler { + // Do note that the default constructor is required, but implicitly defined in this case + + @Override + public IMessage onMessage(CancelModeMessage message, MessageContext ctx) { + + // Execute the action on the main server thread by adding it as a scheduled task + IThreadListener threadListener = EffortlessBuilding.proxy.getThreadListenerFromContext(ctx); + threadListener.addScheduledTask(() -> { + EntityPlayer player = EffortlessBuilding.proxy.getPlayerEntityFromContext(ctx); + + BuildModes.initializeMode(player); + }); + // No response packet + return null; + } + } +} diff --git a/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java b/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java index 57f06e5..57bb37d 100644 --- a/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java +++ b/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java @@ -26,6 +26,7 @@ import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.text.TextFormatting; +import net.minecraftforge.client.event.GuiOpenEvent; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.TextureStitchEvent; @@ -54,10 +55,7 @@ import nl.requios.effortlessbuilding.helper.ReachHelper; import nl.requios.effortlessbuilding.helper.RenderHelper; import nl.requios.effortlessbuilding.helper.ShaderHelper; import nl.requios.effortlessbuilding.item.ItemRandomizerBag; -import nl.requios.effortlessbuilding.network.BlockBrokenMessage; -import nl.requios.effortlessbuilding.network.BlockPlacedMessage; -import nl.requios.effortlessbuilding.network.ModeSettingsMessage; -import nl.requios.effortlessbuilding.network.ModifierSettingsMessage; +import nl.requios.effortlessbuilding.network.*; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; @@ -84,13 +82,14 @@ public class ClientProxy implements IProxy { @Override public void init(FMLInitializationEvent event) { // register key bindings - keyBindings = new KeyBinding[4]; + keyBindings = new KeyBinding[5]; // instantiate the key bindings keyBindings[0] = new KeyBinding("key.effortlessbuilding.hud.desc", Keyboard.KEY_ADD, "key.effortlessbuilding.category"); keyBindings[1] = new KeyBinding("key.effortlessbuilding.replace.desc", Keyboard.KEY_SUBTRACT, "key.effortlessbuilding.category"); keyBindings[2] = new KeyBinding("key.effortlessbuilding.creative.desc", Keyboard.KEY_F4, "key.effortlessbuilding.category"); keyBindings[3] = new KeyBinding("key.effortlessbuilding.mode.desc", Keyboard.KEY_LMENU, "key.effortlessbuilding.category"); + keyBindings[4] = new KeyBinding("Reload shaders", Keyboard.KEY_TAB, "key.effortlessbuilding.category"); // register all the key bindings for (int i = 0; i < keyBindings.length; ++i) { @@ -266,6 +265,9 @@ public class ClientProxy implements IProxy { breakCooldown--; } } + + //EffortlessBuilding.packetHandler.sendToServer(new CancelModeMessage()); + } else { breakCooldown = 0; } @@ -293,9 +295,6 @@ public class ClientProxy implements IProxy { //QuickReplace toggle if (keyBindings[1].isPressed()) { - //TODO testing - EffortlessBuilding.log(player, "ShaderHelper init"); - ShaderHelper.init(); ModifierSettingsManager.ModifierSettings modifierSettings = ModifierSettingsManager.getModifierSettings(player); @@ -314,6 +313,12 @@ public class ClientProxy implements IProxy { } } + if (keyBindings[4].isPressed()) { + //TODO remove + ShaderHelper.init(); + EffortlessBuilding.log(player, "Reloaded shaders"); + } + } @SubscribeEvent @@ -349,6 +354,14 @@ public class ClientProxy implements IProxy { } + @SubscribeEvent + public static void onGuiOpen(GuiOpenEvent event) { + EntityPlayer player = Minecraft.getMinecraft().player; + if (player != null) { + BuildModes.initializeMode(player); + } + } + @SubscribeEvent public static void onRenderGameOverlay(final RenderGameOverlayEvent.Post event ) { EntityPlayerSP player = Minecraft.getMinecraft().player; diff --git a/src/main/resources/assets/effortlessbuilding/shaders/dissolve.frag b/src/main/resources/assets/effortlessbuilding/shaders/dissolve.frag index 44f8ce0..c5ee1f6 100644 --- a/src/main/resources/assets/effortlessbuilding/shaders/dissolve.frag +++ b/src/main/resources/assets/effortlessbuilding/shaders/dissolve.frag @@ -97,12 +97,23 @@ void main() { float b = color.b * gl_Color.b; float a = color.a; // Ignore gl_Color.a as we don't want to make use of that for the dissolve effect - float pulse = (sin(time / 10.0) + 1.0) / 2.0; - vec4 pulseColor = texture2D(mask, maskcoord + time / 1000.0); - vec4 pulseColor2 = texture2D(mask, vec2(maskcoord.x - time / 1300.0, maskcoord.y - time / 1300.0)); + r -= 0.1; + g += 0.0; + b += 0.1; + + float pulse = (sin(time / 5.0) + 1.0) / 2.0; + pulse = 1.0;//pulse / 2.0 + 0.5; + vec4 pulseColor = texture2D(mask, maskcoord + time / 400.0); + vec4 pulseColor2 = texture2D(mask, vec2(maskcoord.x - time / 400.0, maskcoord.y - time / 400.0)); float pulseGreyScale = pulseColor.r + pulseColor2.r / 2.0; - g += (1.0 - g) * pulseGreyScale * pulse * 0.2; - b += (1.0 - b) * pulseGreyScale * pulse; + + r -= r * pulseColor.r * pulse * 0.2; + g += (1.0 - g) * pulseColor.r * pulse * 0.2; + b += (1.0 - b) * pulseColor.r * pulse * 0.8; + + r -= r * pulseColor2.r * pulse * 0.4; + g += (1.0 - g) * pulseColor2.r * pulse * 0.2; + b += (1.0 - b) * pulseColor2.r * pulse; // float exr1 = sin(texcoord.x * 2 + texcoord.y * 10 + time * 0.035); // float exr2 = sin(texcoord.x * 20 + texcoord.y * 2 + time * 0.15); @@ -119,9 +130,9 @@ void main() { // g -= exr; if(highlight == 1) { - r -= 0.2; + r += 0.0; + g += 0.1; b -= 0.2; - g -= 0.2; } r = max(0, min(1, r)); diff --git a/src/main/resources/assets/effortlessbuilding/textures/gui/container/randomizerbag.png b/src/main/resources/assets/effortlessbuilding/textures/gui/container/randomizerbag.png index 30bf1326869b7c59f2b937236840a8b8b6795472..d138becc052e8a722f9d018cd601f1abb4921d8a 100644 GIT binary patch delta 19 acmX@ad5CjE8Z(=fg4h=AS(|g1!x#ZUvIZCc delta 19 acmX@ad5CjE8Z#S{V8GYu(VKIa!x#ZXKn8gL diff --git a/src/main/resources/assets/effortlessbuilding/textures/items/randomizerbag.png b/src/main/resources/assets/effortlessbuilding/textures/items/randomizerbag.png index cde2f04136f0b617f7fe3bbe1a3bc55267a42f55..368ed65be4b9d8a02b92c7cc2cc5d2eea3ba1e97 100644 GIT binary patch delta 40 ucmeyt)WtkOg`X|S+ueoXKL{?^yL|FQMLDj=OswK&T2WVeJ2raiGXelGA`Zm> delta 48 zcmeBT{=qasMU}I_BeIx*f$s