From 573cd4dd2465520bc2e57ad3c7e525b09ffadb3b Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Thu, 30 Jul 2020 18:57:20 -0400 Subject: [PATCH] Improve REI Plugin --- .../block/lightning/LightningRodBlock.java | 6 +++ .../client/rei/InfuserCategory.java | 14 +++---- .../energy/core/util/EnergyTicker.java | 3 +- .../energonrelics/mixin/MixinEntity.java | 38 +++++++++++-------- .../assets/energonrelics/lang/en_us.json | 2 +- 5 files changed, 39 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/thebrokenrail/energonrelics/block/lightning/LightningRodBlock.java b/src/main/java/com/thebrokenrail/energonrelics/block/lightning/LightningRodBlock.java index 736aaca..0655077 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/block/lightning/LightningRodBlock.java +++ b/src/main/java/com/thebrokenrail/energonrelics/block/lightning/LightningRodBlock.java @@ -13,6 +13,7 @@ import net.minecraft.block.ShapeContext; import net.minecraft.block.enums.DoubleBlockHalf; import net.minecraft.block.piston.PistonBehavior; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; import net.minecraft.state.StateManager; import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; @@ -126,4 +127,9 @@ public class LightningRodBlock extends SimpleBlock { super.onBreak(world, pos, state, player); } + + @Override + public Item asItem() { + return EnergonRelics.LIGHTNING_ROD_BASE_BLOCK.asItem(); + } } diff --git a/src/main/java/com/thebrokenrail/energonrelics/client/rei/InfuserCategory.java b/src/main/java/com/thebrokenrail/energonrelics/client/rei/InfuserCategory.java index 3c3543b..7ac9190 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/client/rei/InfuserCategory.java +++ b/src/main/java/com/thebrokenrail/energonrelics/client/rei/InfuserCategory.java @@ -25,18 +25,18 @@ public class InfuserCategory implements RecipeCategory { Point startPoint = new Point(bounds.getCenterX() - 41, bounds.y + 10); List widgets = new ArrayList<>(); widgets.add(Widgets.createRecipeBase(bounds)); - widgets.add(Widgets.createResultSlotBackground(new Point(startPoint.x + 61, startPoint.y + 18))); - widgets.add(Widgets.createLabel(new Point(bounds.x + bounds.width - 5, bounds.y + 5), new TranslatableText("category.rei." + EnergonRelics.NAMESPACE + ".infuser.chance", new DecimalFormat("###.##").format(display.successChance * 100d))).noShadow().rightAligned().color(0xFF404040, 0xFFBBBBBB)); - widgets.add(Widgets.createLabel(new Point(bounds.x + bounds.width - 5, bounds.y + 14), new TranslatableText("category.rei." + EnergonRelics.NAMESPACE + ".infuser.cost", display.cost)).noShadow().rightAligned().color(0xFF404040, 0xFFBBBBBB)); - widgets.add(Widgets.createArrow(new Point(startPoint.x + 24, startPoint.y + 17)).animationDurationTicks(HardcodedConfig.INFUSER_TIME)); - widgets.add(Widgets.createSlot(new Point(startPoint.x + 1, startPoint.y + 18)).entries(display.getInputEntries().get(0)).markInput()); - widgets.add(Widgets.createSlot(new Point(startPoint.x + 61, startPoint.y + 18)).entries(display.getOutputEntries()).disableBackground().markOutput()); + widgets.add(Widgets.createResultSlotBackground(new Point(startPoint.x + 61, startPoint.y + 26))); + widgets.add(Widgets.createLabel(new Point(bounds.x + bounds.width / 2, bounds.y + 9), new TranslatableText("category.rei." + EnergonRelics.NAMESPACE + ".infuser.chance", new DecimalFormat("###.##").format(display.successChance * 100d))).noShadow().centered().color(0xFF404040, 0xFFBBBBBB)); + widgets.add(Widgets.createLabel(new Point(bounds.x + bounds.width / 2, bounds.y + 18), new TranslatableText("category.rei." + EnergonRelics.NAMESPACE + ".infuser.cost", display.cost)).noShadow().centered().color(0xFF404040, 0xFFBBBBBB)); + widgets.add(Widgets.createArrow(new Point(startPoint.x + 24, startPoint.y + 25)).animationDurationTicks(HardcodedConfig.INFUSER_TIME)); + widgets.add(Widgets.createSlot(new Point(startPoint.x + 1, startPoint.y + 26)).entries(display.getInputEntries().get(0)).markInput()); + widgets.add(Widgets.createSlot(new Point(startPoint.x + 61, startPoint.y + 26)).entries(display.getOutputEntries()).disableBackground().markOutput()); return widgets; } @Override public int getDisplayHeight() { - return 58; + return 66; } @Override diff --git a/src/main/java/com/thebrokenrail/energonrelics/energy/core/util/EnergyTicker.java b/src/main/java/com/thebrokenrail/energonrelics/energy/core/util/EnergyTicker.java index 49ba790..8952535 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/energy/core/util/EnergyTicker.java +++ b/src/main/java/com/thebrokenrail/energonrelics/energy/core/util/EnergyTicker.java @@ -1,5 +1,6 @@ package com.thebrokenrail.energonrelics.energy.core.util; +import com.thebrokenrail.energonrelics.EnergonRelics; import com.thebrokenrail.energonrelics.component.NetworkComponent; import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; @@ -18,7 +19,7 @@ public class EnergyTicker { public static void tick(World world) { if (Objects.requireNonNull(world.getServer()).getThread() == Thread.currentThread()) { - world.getProfiler().push("energyTicker"); + world.getProfiler().push(EnergonRelics.NAMESPACE); NetworkComponent.getInstance((ServerWorld) world).clearCache(); diff --git a/src/main/java/com/thebrokenrail/energonrelics/mixin/MixinEntity.java b/src/main/java/com/thebrokenrail/energonrelics/mixin/MixinEntity.java index fcce1d6..f6bb0a2 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/mixin/MixinEntity.java +++ b/src/main/java/com/thebrokenrail/energonrelics/mixin/MixinEntity.java @@ -4,6 +4,7 @@ import com.thebrokenrail.energonrelics.block.forcefield.util.BeamBlock; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.MinecraftServer; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.MathHelper; @@ -19,25 +20,32 @@ import java.util.function.Predicate; @Mixin(Entity.class) public abstract class MixinEntity { - @Shadow public abstract Box getBoundingBox(); + @Shadow + public abstract Box getBoundingBox(); - @Shadow public abstract World getEntityWorld(); + @Shadow + public abstract World getEntityWorld(); + + @Shadow + public abstract MinecraftServer getServer(); @Unique private boolean isTouching(Predicate test) { - Box box = getBoundingBox(); - int i = MathHelper.floor(box.minX); - int j = MathHelper.ceil(box.maxX); - int k = MathHelper.floor(box.minY); - int l = MathHelper.ceil(box.maxY); - int m = MathHelper.floor(box.minZ); - int n = MathHelper.ceil(box.maxZ); - for (int p = i; p < j; ++p) { - for (int q = k; q < l; ++q) { - for (int r = m; r < n; ++r) { - BlockPos pos = new BlockPos(p, q, r); - if (test.test(getEntityWorld().getBlockState(pos).getBlock())) { - return true; + if (getServer() == null || getServer().getThread() == Thread.currentThread()) { + Box box = getBoundingBox(); + int i = MathHelper.floor(box.minX); + int j = MathHelper.ceil(box.maxX); + int k = MathHelper.floor(box.minY); + int l = MathHelper.ceil(box.maxY); + int m = MathHelper.floor(box.minZ); + int n = MathHelper.ceil(box.maxZ); + for (int p = i; p < j; ++p) { + for (int q = k; q < l; ++q) { + for (int r = m; r < n; ++r) { + BlockPos pos = new BlockPos(p, q, r); + if (test.test(getEntityWorld().getBlockState(pos).getBlock())) { + return true; + } } } } diff --git a/src/main/resources/assets/energonrelics/lang/en_us.json b/src/main/resources/assets/energonrelics/lang/en_us.json index 25087d7..3c01184 100644 --- a/src/main/resources/assets/energonrelics/lang/en_us.json +++ b/src/main/resources/assets/energonrelics/lang/en_us.json @@ -51,6 +51,6 @@ "text.energonrelics.battery_core_tooltip": "%s Energon", "text.energonrelics.multimeter_separator": ", ", "category.rei.energonrelics.infuser.chance": "%s%% Chance", - "category.rei.energonrelics.infuser.cost": "Costing %s Energon", + "category.rei.energonrelics.infuser.cost": "%s Energon", "category.rei.energonrelics.infuser.name": "Infuser" } \ No newline at end of file