diff --git a/src/main/java/nl/requios/effortlessbuilding/buildmode/ModeSettingsManager.java b/src/main/java/nl/requios/effortlessbuilding/buildmode/ModeSettingsManager.java index aae1cbb..50ba186 100644 --- a/src/main/java/nl/requios/effortlessbuilding/buildmode/ModeSettingsManager.java +++ b/src/main/java/nl/requios/effortlessbuilding/buildmode/ModeSettingsManager.java @@ -85,6 +85,12 @@ public class ModeSettingsManager { handleNewPlayer(player); } + @SubscribeEvent + public static void onPlayerChangedDimension(PlayerEvent.PlayerChangedDimensionEvent event) { + EntityPlayer player = event.player; + handleNewPlayer(player); + } + private static void handleNewPlayer(EntityPlayer player){ if (getModeSettings(player) == null) { setModeSettings(player, new ModeSettings()); diff --git a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/ModifierSettingsManager.java b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/ModifierSettingsManager.java index 72a9d6d..46f3c56 100644 --- a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/ModifierSettingsManager.java +++ b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/ModifierSettingsManager.java @@ -176,6 +176,12 @@ public class ModifierSettingsManager { handleNewPlayer(player); } + @SubscribeEvent + public static void onPlayerChangedDimension(PlayerEvent.PlayerChangedDimensionEvent event) { + EntityPlayer player = event.player; + handleNewPlayer(player); + } + private static void handleNewPlayer(EntityPlayer player){ if (getModifierSettings(player) == null) { setModifierSettings(player, new ModifierSettings()); diff --git a/src/main/java/nl/requios/effortlessbuilding/command/CommandReach.java b/src/main/java/nl/requios/effortlessbuilding/command/CommandReach.java index 1387cda..0249170 100644 --- a/src/main/java/nl/requios/effortlessbuilding/command/CommandReach.java +++ b/src/main/java/nl/requios/effortlessbuilding/command/CommandReach.java @@ -24,12 +24,14 @@ public class CommandReach extends CommandBase { @Override public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException { + EntityPlayerMP player = (EntityPlayerMP) sender; if (args.length != 1) { + int reachUpgrade = ModifierSettingsManager.getModifierSettings(player).getReachUpgrade(); + EffortlessBuilding.log(player, "Current reach: level "+reachUpgrade); throw new WrongUsageException("commands.reach.usage"); } if (sender instanceof EntityPlayerMP) { - EntityPlayerMP player = (EntityPlayerMP) sender; //Set reach level to args[0] ModifierSettingsManager.ModifierSettings modifierSettings = ModifierSettingsManager.getModifierSettings(player); modifierSettings.setReachUpgrade(Integer.valueOf(args[0])); diff --git a/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java b/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java index 17fedba..1986322 100644 --- a/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java +++ b/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java @@ -308,90 +308,6 @@ public class ClientProxy implements IProxy { } } - @SubscribeEvent - public static void onRenderGameOverlay(final RenderGameOverlayEvent.Post event ) { - EntityPlayerSP player = Minecraft.getMinecraft().player; - - //final ChiselToolType tool = getHeldToolType( lastHand ); - final RenderGameOverlayEvent.ElementType type = event.getType(); - //TODO check if chisel and bits tool in hand (and has menu) - if (type == RenderGameOverlayEvent.ElementType.ALL) - { - final boolean wasVisible = RadialMenu.instance.isVisible(); - - if ( keyBindings[3].isKeyDown() ) - { - RadialMenu.instance.actionUsed = false; - RadialMenu.instance.raiseVisibility(); - } - else - { - if ( !RadialMenu.instance.actionUsed ) - { - ModeSettingsManager.ModeSettings modeSettings = ModeSettingsManager.getModeSettings(player); - - if ( RadialMenu.instance.switchTo != null ) - { - ClientProxy.playRadialMenuSound(); - modeSettings.setBuildMode(RadialMenu.instance.switchTo); - ModeSettingsManager.setModeSettings(player, modeSettings); - EffortlessBuilding.packetHandler.sendToServer(new ModeSettingsMessage(modeSettings)); - - EffortlessBuilding.log(player, modeSettings.getBuildMode().name, true); - } - - //TODO change buildmode settings - - ClientProxy.playRadialMenuSound(); - } - - RadialMenu.instance.actionUsed = true; - RadialMenu.instance.decreaseVisibility(); - } - - if ( RadialMenu.instance.isVisible() ) - { - final ScaledResolution res = event.getResolution(); - RadialMenu.instance.configure( res.getScaledWidth(), res.getScaledHeight() ); - - if ( wasVisible == false ) - { - RadialMenu.instance.mc.inGameHasFocus = false; - RadialMenu.instance.mc.mouseHelper.ungrabMouseCursor(); - } - - if ( RadialMenu.instance.mc.inGameHasFocus ) - { - KeyBinding.unPressAllKeys(); - } - - final int k1 = Mouse.getX() * res.getScaledWidth() / RadialMenu.instance.mc.displayWidth; - final int l1 = res.getScaledHeight() - Mouse.getY() * res.getScaledHeight() / RadialMenu.instance.mc.displayHeight - 1; - - net.minecraftforge.client.ForgeHooksClient.drawScreen( RadialMenu.instance, k1, l1, event.getPartialTicks() ); - } - else - { - if ( wasVisible ) - { - RadialMenu.instance.mc.setIngameFocus(); - } - } - } - } - - public static void playRadialMenuSound() - { - final float volume = 0.1f; - if ( volume >= 0.0001f ) - { - final PositionedSoundRecord psr = new PositionedSoundRecord( SoundEvents.UI_BUTTON_CLICK, SoundCategory.MASTER, - volume, 1.0f, Minecraft.getMinecraft().player.getPosition() ); - Minecraft.getMinecraft().getSoundHandler().playSound(psr); - } - } - - public static RayTraceResult getLookingAt(EntityPlayer player) { // World world = player.world; diff --git a/src/main/java/nl/requios/effortlessbuilding/render/BlockPreviewRenderer.java b/src/main/java/nl/requios/effortlessbuilding/render/BlockPreviewRenderer.java index bba2b1d..db6f74e 100644 --- a/src/main/java/nl/requios/effortlessbuilding/render/BlockPreviewRenderer.java +++ b/src/main/java/nl/requios/effortlessbuilding/render/BlockPreviewRenderer.java @@ -2,6 +2,7 @@ package nl.requios.effortlessbuilding.render; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.renderer.BlockRendererDispatcher; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.OpenGlHelper; @@ -21,8 +22,10 @@ import nl.requios.effortlessbuilding.EffortlessBuilding; import nl.requios.effortlessbuilding.buildmode.BuildModes; import nl.requios.effortlessbuilding.buildmode.IBuildMode; import nl.requios.effortlessbuilding.buildmode.ModeSettingsManager; +import nl.requios.effortlessbuilding.buildmode.ModeSettingsManager.ModeSettings; import nl.requios.effortlessbuilding.buildmodifier.BuildModifiers; import nl.requios.effortlessbuilding.buildmodifier.ModifierSettingsManager; +import nl.requios.effortlessbuilding.buildmodifier.ModifierSettingsManager.ModifierSettings; import nl.requios.effortlessbuilding.helper.CompatHelper; import nl.requios.effortlessbuilding.helper.ReachHelper; import nl.requios.effortlessbuilding.helper.SurvivalHelper; @@ -68,7 +71,7 @@ public class BlockPreviewRenderer { private static final int secondaryTextureUnit = 7; - public static void render(EntityPlayer player, ModifierSettingsManager.ModifierSettings modifierSettings, ModeSettingsManager.ModeSettings modeSettings) { + public static void render(EntityPlayer player, ModifierSettings modifierSettings, ModeSettings modeSettings) { //Render placed blocks with dissolve effect for (int i = 0; i < placedDataList.size(); i++) { @@ -118,9 +121,7 @@ public class BlockPreviewRenderer { //Dont render if in normal mode and modifiers are disabled //Unless alwaysShowBlockPreview is true in config - if (modeSettings.getBuildMode() != BuildModes.BuildModeEnum.Normal || - (startPos != null && BuildModifiers.isEnabled(modifierSettings, startPos)) || - BuildConfig.visuals.alwaysShowBlockPreview) { + if (doRenderBlockPreviews(modifierSettings, modeSettings, startPos)) { RenderHandler.beginBlockPreviews(); @@ -214,12 +215,20 @@ public class BlockPreviewRenderer { } } + public static boolean doRenderBlockPreviews(ModifierSettings modifierSettings, ModeSettings modeSettings, BlockPos startPos) { + return modeSettings.getBuildMode() != BuildModes.BuildModeEnum.Normal || + (startPos != null && BuildModifiers.isEnabled(modifierSettings, startPos)) || + BuildConfig.visuals.alwaysShowBlockPreview; + } + protected static void renderBlockPreviews(List coordinates, List blockStates, List itemStacks, float dissolve, BlockPos firstPos, BlockPos secondPos, boolean checkCanPlace) { EntityPlayer player = Minecraft.getMinecraft().player; BlockRendererDispatcher dispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher(); + if (coordinates.isEmpty()) return; + for (int i = coordinates.size() - 1; i >= 0; i--) { BlockPos blockPos = coordinates.get(i); IBlockState blockState = blockStates.get(i); @@ -242,9 +251,16 @@ public class BlockPreviewRenderer { } public static void onBlocksPlaced() { - //Save current coordinates, blockstates and itemstacks - placedDataList.add(new PlacedData(ClientProxy.ticksInGame, previousCoordinates, previousBlockStates, - previousItemStacks, previousFirstPos, previousSecondPos)); + EntityPlayerSP player = Minecraft.getMinecraft().player; + ModifierSettings modifierSettings = ModifierSettingsManager.getModifierSettings(player); + ModeSettings modeSettings = ModeSettingsManager.getModeSettings(player); + + //Check if block previews are enabled + if (doRenderBlockPreviews(modifierSettings, modeSettings, previousFirstPos)) { + //Save current coordinates, blockstates and itemstacks + placedDataList.add(new PlacedData(ClientProxy.ticksInGame, previousCoordinates, previousBlockStates, + previousItemStacks, previousFirstPos, previousSecondPos)); + } } diff --git a/src/main/java/nl/requios/effortlessbuilding/render/RenderHandler.java b/src/main/java/nl/requios/effortlessbuilding/render/RenderHandler.java index 681798c..fa9c5b7 100644 --- a/src/main/java/nl/requios/effortlessbuilding/render/RenderHandler.java +++ b/src/main/java/nl/requios/effortlessbuilding/render/RenderHandler.java @@ -2,12 +2,17 @@ package nl.requios.effortlessbuilding.render; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.BlockRendererDispatcher; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderGlobal; import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.SoundEvents; import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundEvent; @@ -16,6 +21,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.IWorldEventListener; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -24,7 +30,11 @@ import nl.requios.effortlessbuilding.EffortlessBuilding; import nl.requios.effortlessbuilding.buildmode.ModeSettingsManager; import nl.requios.effortlessbuilding.buildmodifier.BuildModifiers; import nl.requios.effortlessbuilding.buildmodifier.ModifierSettingsManager; +import nl.requios.effortlessbuilding.gui.buildmode.RadialMenu; import nl.requios.effortlessbuilding.helper.SurvivalHelper; +import nl.requios.effortlessbuilding.network.ModeSettingsMessage; +import nl.requios.effortlessbuilding.proxy.ClientProxy; +import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL14; @@ -54,6 +64,76 @@ public class RenderHandler implements IWorldEventListener { end(); } + @SubscribeEvent + public static void onRenderGameOverlay(final RenderGameOverlayEvent.Post event ) { + EntityPlayerSP player = Minecraft.getMinecraft().player; + + //final ChiselToolType tool = getHeldToolType( lastHand ); + final RenderGameOverlayEvent.ElementType type = event.getType(); + //TODO check if chisel and bits tool in hand (and has menu) + if (type == RenderGameOverlayEvent.ElementType.ALL) { + final boolean wasVisible = RadialMenu.instance.isVisible(); + + if (ClientProxy.keyBindings[3].isKeyDown()) { + RadialMenu.instance.actionUsed = false; + RadialMenu.instance.raiseVisibility(); + } else { + if ( !RadialMenu.instance.actionUsed ) { + ModeSettingsManager.ModeSettings modeSettings = ModeSettingsManager.getModeSettings(player); + + if ( RadialMenu.instance.switchTo != null ) { + playRadialMenuSound(); + modeSettings.setBuildMode(RadialMenu.instance.switchTo); + ModeSettingsManager.setModeSettings(player, modeSettings); + EffortlessBuilding.packetHandler.sendToServer(new ModeSettingsMessage(modeSettings)); + + EffortlessBuilding.log(player, modeSettings.getBuildMode().name, true); + } + + //TODO change buildmode settings + + playRadialMenuSound(); + } + + RadialMenu.instance.actionUsed = true; + RadialMenu.instance.decreaseVisibility(); + } + + if (RadialMenu.instance.isVisible()) { + + final ScaledResolution res = event.getResolution(); + RadialMenu.instance.configure(res.getScaledWidth(), res.getScaledHeight()); + + if (!wasVisible) { + RadialMenu.instance.mc.inGameHasFocus = false; + RadialMenu.instance.mc.mouseHelper.ungrabMouseCursor(); + } + + if (RadialMenu.instance.mc.inGameHasFocus) { + KeyBinding.unPressAllKeys(); + } + + final int k1 = Mouse.getX() * res.getScaledWidth() / RadialMenu.instance.mc.displayWidth; + final int l1 = res.getScaledHeight() - Mouse.getY() * res.getScaledHeight() / RadialMenu.instance.mc.displayHeight - 1; + + net.minecraftforge.client.ForgeHooksClient.drawScreen(RadialMenu.instance, k1, l1, event.getPartialTicks()); + } else { + if (wasVisible) { + RadialMenu.instance.mc.setIngameFocus(); + } + } + } + } + + public static void playRadialMenuSound() { + final float volume = 0.1f; + if (volume >= 0.0001f) { + final PositionedSoundRecord psr = new PositionedSoundRecord(SoundEvents.UI_BUTTON_CLICK, SoundCategory.MASTER, + volume, 1.0f, Minecraft.getMinecraft().player.getPosition()); + Minecraft.getMinecraft().getSoundHandler().playSound(psr); + } + } + private static void begin(float partialTicks) { EntityPlayer player = Minecraft.getMinecraft().player; double playerX = player.prevPosX + (player.posX - player.prevPosX) * partialTicks; @@ -87,10 +167,9 @@ public class RenderHandler implements IWorldEventListener { GL11.glPushAttrib(GL11.GL_ENABLE_BIT); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glEnable(GL11.GL_TEXTURE_2D); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(EffortlessBuilding.MODID, "textures/shader_color.png")); + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(EffortlessBuilding.MODID, "textures/shader_mask.png")); - Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); GlStateManager.enableBlend(); GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL14.glBlendColor(1F, 1F, 1F, 0.8f); diff --git a/src/main/resources/assets/effortlessbuilding/textures/shader_color.png b/src/main/resources/assets/effortlessbuilding/textures/shader_color.png deleted file mode 100644 index 617d353..0000000 Binary files a/src/main/resources/assets/effortlessbuilding/textures/shader_color.png and /dev/null differ