diff --git a/gradle.properties b/gradle.properties index ad8ca56..5d8c652 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,9 +5,9 @@ mod_version = 1.0.0 org.gradle.jvmargs = -Xmx1G # Versions -minecraft_version = 1.21.4 -yarn_mappings = 1.21.4+build.8 +minecraft_version = 1.21.5 +yarn_mappings = 1.21.5+build.1 loader_version = 0.16.14 -fabric_version = 0.119.2+1.21.4 +fabric_version = 0.123.2+1.21.5 -plasmid_version = 0.6.3+1.21.4 \ No newline at end of file +plasmid_version = 0.6.4+1.21.5 \ No newline at end of file diff --git a/src/main/java/io/github/haykam821/microbattle/PoolHelper.java b/src/main/java/io/github/haykam821/microbattle/PoolHelper.java new file mode 100644 index 0000000..a8c24fa --- /dev/null +++ b/src/main/java/io/github/haykam821/microbattle/PoolHelper.java @@ -0,0 +1,24 @@ +package io.github.haykam821.microbattle; + +import java.util.List; +import java.util.function.Predicate; + +import net.minecraft.util.collection.Pool; +import net.minecraft.util.collection.Weighted; + +public final class PoolHelper { + private PoolHelper() { + return; + } + + public static Pool filter(Pool pool, Predicate predicate) { + List> entries = pool.getEntries() + .stream() + .filter(entry -> { + return predicate.test(entry.value()); + }) + .toList(); + + return Pool.of(entries); + } +} diff --git a/src/main/java/io/github/haykam821/microbattle/game/kit/FoxKit.java b/src/main/java/io/github/haykam821/microbattle/game/kit/FoxKit.java index 0e0d1f1..c257d79 100644 --- a/src/main/java/io/github/haykam821/microbattle/game/kit/FoxKit.java +++ b/src/main/java/io/github/haykam821/microbattle/game/kit/FoxKit.java @@ -2,6 +2,7 @@ import java.util.Optional; +import io.github.haykam821.microbattle.PoolHelper; import io.github.haykam821.microbattle.game.PlayerEntry; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.effect.StatusEffectInstance; @@ -14,12 +15,11 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.util.DyeColor; -import net.minecraft.util.collection.DataPool; -import net.minecraft.util.collection.Weighted; +import net.minecraft.util.collection.Pool; import xyz.nucleoid.plasmid.api.game.common.OldCombat; public class FoxKit extends Kit { - private static final DataPool DIG_ITEMS = DataPool.builder() + private static final Pool DIG_ITEMS = Pool.builder() .add(new DigEntry(durabilityStack(Items.IRON_SWORD, 4), true), 500) .add(new DigEntry(durabilityStack(Items.IRON_PICKAXE, 32), true), 500) .add(new DigEntry(durabilityStack(Items.IRON_AXE, 4), true), 500) @@ -104,15 +104,9 @@ private void dig() { } private ItemStack getDigStack() { - DataPool.Builder builder = DataPool.builder(); + Pool pool = PoolHelper.filter(DIG_ITEMS, entry -> !entry.isRestricted(this.player)); - for (Weighted.Present entry : DIG_ITEMS.getEntries()) { - if (!entry.data().isRestricted(this.player)) { - builder.add(entry.data(), entry.getWeight().getValue()); - } - } - - Optional optional = builder.build().getDataOrEmpty(entry.getPlayer().getRandom()); + Optional optional = pool.getOrEmpty(entry.getPlayer().getRandom()); return optional.isPresent() ? optional.get().stack().copy() : null; } diff --git a/src/main/java/io/github/haykam821/microbattle/game/kit/Kit.java b/src/main/java/io/github/haykam821/microbattle/game/kit/Kit.java index 3d3f13f..1dcd90b 100644 --- a/src/main/java/io/github/haykam821/microbattle/game/kit/Kit.java +++ b/src/main/java/io/github/haykam821/microbattle/game/kit/Kit.java @@ -10,6 +10,7 @@ import io.github.haykam821.microbattle.game.phase.MicroBattleActivePhase; import net.minecraft.block.BlockState; import net.minecraft.component.type.PotionContentsComponent; +import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.item.Item; @@ -96,7 +97,7 @@ protected Text getName() { private Text getHoverableName() { return this.getName().copy().styled(style -> { - return style.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, this.getTooltip(""))); + return style.withHoverEvent(new HoverEvent.ShowText(this.getTooltip(""))); }); } @@ -155,7 +156,7 @@ public final void baseTick() { entry.tick(this.entry); } - if (this.isDamagedByWater() && this.player.isWet()) { + if (this.isDamagedByWater() && this.player.isTouchingWaterOrRain()) { this.player.damage(this.player.getServerWorld(), this.player.getDamageSources().drown(), 1.0F); } @@ -224,15 +225,15 @@ public final void applyInventory() { } List armorStacks = this.getArmorStacks(); - int index = 3; + int slot = EquipmentSlot.HEAD.getOffsetEntitySlotId(36); for (ItemStack stack : armorStacks) { - player.getInventory().armor.set(index, stack); - index -= 1; + player.getInventory().setStack(slot, stack); + slot -= 1; } List stacks = new ArrayList<>(); this.appendInitialStacks(stacks); - int slot = 0; + slot = 0; for (ItemStack stack : stacks) { player.getInventory().setStack(slot, this.phase.isOldCombat() ? OldCombat.applyTo(stack) : stack); slot += 1; diff --git a/src/main/java/io/github/haykam821/microbattle/game/kit/selection/KitSelectionUi.java b/src/main/java/io/github/haykam821/microbattle/game/kit/selection/KitSelectionUi.java index bc85833..6cb0ddf 100644 --- a/src/main/java/io/github/haykam821/microbattle/game/kit/selection/KitSelectionUi.java +++ b/src/main/java/io/github/haykam821/microbattle/game/kit/selection/KitSelectionUi.java @@ -6,13 +6,13 @@ import eu.pb4.sgui.api.gui.SlotGuiInterface; import io.github.haykam821.microbattle.game.kit.KitType; import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.TooltipDisplayComponent; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.screen.ScreenHandlerType; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import net.minecraft.util.Unit; import xyz.nucleoid.plasmid.api.shop.ShopEntry; public class KitSelectionUi { @@ -23,7 +23,14 @@ private static void addKit(SlotGuiInterface builder, KitSelectionManager kitSele Text name = kitType.getName().copy().formatted(Formatting.GREEN); ItemStack icon = kitType.getIcon(); - icon.set(DataComponentTypes.HIDE_ADDITIONAL_TOOLTIP, Unit.INSTANCE); + + icon.apply(DataComponentTypes.TOOLTIP_DISPLAY, TooltipDisplayComponent.DEFAULT, display -> { + return display + .with(DataComponentTypes.ATTRIBUTE_MODIFIERS, true) + .with(DataComponentTypes.BEES, true) + .with(DataComponentTypes.BLOCK_STATE, true) + .with(DataComponentTypes.POTION_CONTENTS, true); + }); if (icon.contains(DataComponentTypes.POTION_CONTENTS)) { icon.set(DataComponentTypes.CUSTOM_NAME, name.copy().styled(GuiHelpers.STYLE_CLEARER)); @@ -50,7 +57,6 @@ public void onClose() { gui.setTitle(TITLE); ItemStack icon = new ItemStack(Items.ENDER_CHEST); - icon.set(DataComponentTypes.HIDE_ADDITIONAL_TOOLTIP, Unit.INSTANCE); gui.addSlot(ShopEntry .ofIcon(icon) diff --git a/src/main/java/io/github/haykam821/microbattle/game/map/fixture/BuildingFixture.java b/src/main/java/io/github/haykam821/microbattle/game/map/fixture/BuildingFixture.java index f832f93..c1fd244 100644 --- a/src/main/java/io/github/haykam821/microbattle/game/map/fixture/BuildingFixture.java +++ b/src/main/java/io/github/haykam821/microbattle/game/map/fixture/BuildingFixture.java @@ -4,12 +4,12 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.VineBlock; -import net.minecraft.util.collection.DataPool; +import net.minecraft.util.collection.Pool; import net.minecraft.util.math.Direction; import net.minecraft.util.math.random.Random; public class BuildingFixture extends Fixture { - private static final DataPool STATES = DataPool.builder() + private static final Pool STATES = Pool.builder() .add(Blocks.STONE_BRICKS.getDefaultState(), 20) .add(Blocks.COBBLESTONE.getDefaultState(), 5) .add(Blocks.BRICKS.getDefaultState(), 5) @@ -94,7 +94,7 @@ public static BuildingFixture randomize(Random random) { double vineDensity = getVineDensity(random); - BlockState state = STATES.getDataOrEmpty(random).orElseThrow(IllegalStateException::new); + BlockState state = STATES.getOrEmpty(random).orElseThrow(IllegalStateException::new); return new BuildingFixture(size, random.nextInt(4) + 6, size, vineDensity, state); } } diff --git a/src/main/java/io/github/haykam821/microbattle/game/map/fixture/Fixtures.java b/src/main/java/io/github/haykam821/microbattle/game/map/fixture/Fixtures.java index 3c505ae..6d30bbc 100644 --- a/src/main/java/io/github/haykam821/microbattle/game/map/fixture/Fixtures.java +++ b/src/main/java/io/github/haykam821/microbattle/game/map/fixture/Fixtures.java @@ -1,17 +1,17 @@ package io.github.haykam821.microbattle.game.map.fixture; import net.minecraft.block.Blocks; -import net.minecraft.util.collection.DataPool; +import net.minecraft.util.collection.Pool; import net.minecraft.util.math.random.Random; import net.minecraft.world.gen.stateprovider.BlockStateProvider; public final class Fixtures { - private static final DataPool PRIMARY_FIXTURES = DataPool.builder() + private static final Pool PRIMARY_FIXTURES = Pool.builder() .add(Fixtures::building, 5) .add(Fixtures::tower, 1) .build(); - private static final DataPool DECORATION_FIXTURES = DataPool.builder() + private static final Pool DECORATION_FIXTURES = Pool.builder() .add(Fixtures::grassPatch, 1) .build(); @@ -24,7 +24,7 @@ protected static Fixture tower(Random random) { } protected static Fixture primary(Random random) { - return PRIMARY_FIXTURES.getDataOrEmpty(random).orElseThrow().get(random); + return PRIMARY_FIXTURES.getOrEmpty(random).orElseThrow().get(random); } protected static Fixture grassPatch(Random random) { @@ -33,7 +33,7 @@ protected static Fixture grassPatch(Random random) { } protected static Fixture decoration(Random random) { - return DECORATION_FIXTURES.getDataOrEmpty(random).orElseThrow().get(random); + return DECORATION_FIXTURES.getOrEmpty(random).orElseThrow().get(random); } @FunctionalInterface diff --git a/src/main/java/io/github/haykam821/microbattle/game/map/fixture/TowerFixture.java b/src/main/java/io/github/haykam821/microbattle/game/map/fixture/TowerFixture.java index ed7d51d..3247cf6 100644 --- a/src/main/java/io/github/haykam821/microbattle/game/map/fixture/TowerFixture.java +++ b/src/main/java/io/github/haykam821/microbattle/game/map/fixture/TowerFixture.java @@ -4,13 +4,13 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.state.property.Properties; -import net.minecraft.util.collection.DataPool; +import net.minecraft.util.collection.Pool; import net.minecraft.util.math.Direction; import net.minecraft.util.math.random.Random; import xyz.nucleoid.plasmid.api.util.WoodType; public class TowerFixture extends Fixture { - private static final DataPool STATES = DataPool.builder() + private static final Pool STATES = Pool.builder() .add(new Variant(WoodType.OAK, Blocks.SPRUCE_SLAB.getDefaultState()), 20) .add(new Variant(WoodType.DARK_OAK, Blocks.COBBLED_DEEPSLATE_SLAB.getDefaultState()), 10) .add(new Variant(WoodType.ACACIA, Blocks.SMOOTH_STONE_SLAB.getDefaultState()), 5) @@ -81,7 +81,7 @@ private static int randomizeSize(Random random) { } public static TowerFixture randomize(Random random) { - Variant variant = STATES.getDataOrEmpty(random).orElseThrow(IllegalStateException::new); + Variant variant = STATES.getOrEmpty(random).orElseThrow(IllegalStateException::new); int depth = TowerFixture.randomizeSize(random); int width = TowerFixture.randomizeSize(random);