From 1575adfd632378908ff63c18bbdef1116d3377bf Mon Sep 17 00:00:00 2001 From: BrokenK3yboard <63761658+BrokenK3yboard@users.noreply.github.com> Date: Wed, 8 Jan 2025 04:41:45 -0600 Subject: [PATCH] 1.21.1 port fixes --- .../oddities/block/TinyPotatoBlock.java | 10 +-- .../oddities/block/be/CrateBlockEntity.java | 18 ++-- .../oddities/block/be/MagnetBlockEntity.java | 13 ++- .../oddities/capability/CrateItemHandler.java | 15 ++-- .../screen/MatrixEnchantingPlusButton.java | 2 +- .../oddities/inventory/BackpackMenu.java | 7 +- .../oddities/module/TinyPotatoModule.java | 2 +- .../oddities/module/TotemOfHoldingModule.java | 4 +- .../java/org/violetmoon/quark/base/Quark.java | 5 +- .../violetmoon/quark/base/QuarkClient.java | 1 - .../client/config/QuarkConfigHomeScreen.java | 20 ++--- .../base/client/render/QuarkArmorModel.java | 4 +- .../base/client/render/QuarkBoatRenderer.java | 2 +- .../quark/base/handler/WoodSetHandler.java | 2 - .../quark/base/item/boat/QuarkBoat.java | 8 +- .../quark/base/item/boat/QuarkChestBoat.java | 6 +- .../content/automation/block/ChuteBlock.java | 10 +-- .../automation/block/CrafterBlock.java | 3 +- .../automation/block/FeedingTroughBlock.java | 23 ++--- .../block/be/EnderWatcherBlockEntity.java | 2 +- .../content/automation/entity/Gravisand.java | 27 ++---- .../automation/module/CrafterModule.java | 4 +- .../automation/module/GravisandModule.java | 1 - .../quark/content/building/entity/Stool.java | 18 +--- .../building/module/GlassItemFrameModule.java | 5 +- .../module/IndustrialPaletteModule.java | 16 ++-- .../content/building/module/RopeModule.java | 13 +-- .../content/building/module/StoolsModule.java | 37 ++++---- .../building/module/WoodenPostsModule.java | 16 ++-- .../building/recipe/MixedExclusionRecipe.java | 64 ++++++-------- .../mobs/client/model/WraithModel.java | 24 ++---- .../content/mobs/module/CrabsModule.java | 62 ++++++-------- .../content/mobs/module/ForgottenModule.java | 28 ++----- .../content/mobs/module/FoxhoundModule.java | 37 ++++---- .../content/mobs/module/ShibaModule.java | 30 +++---- .../content/mobs/module/StonelingsModule.java | 7 +- .../content/mobs/module/ToretoiseModule.java | 26 +++--- .../content/mobs/module/WraithModule.java | 8 +- .../quark/content/tools/block/CloudBlock.java | 36 ++++---- .../tools/block/be/CloudBlockEntity.java | 7 +- .../quark/content/tools/entity/SkullPike.java | 28 ++----- .../tools/entity/rang/AbstractPickarang.java | 84 ++++++++++--------- .../content/tools/item/ParrotEggItem.java | 2 - .../content/tools/item/PickarangItem.java | 56 ++++++------- .../content/tools/module/AbacusModule.java | 7 +- .../tools/module/ParrotEggsModule.java | 23 +---- .../content/tools/module/PickarangModule.java | 1 - .../content/tools/module/SeedPouchModule.java | 10 +-- .../tools/module/SkullPikesModule.java | 1 - .../quark/content/tweaks/ai/NuzzleGoal.java | 8 +- .../tweaks/client/emote/EmoteHandler.java | 17 ++-- .../item/ClockTimePropertyFunction.java | 6 +- .../item/CompassAnglePropertyFunction.java | 6 +- .../module/AutomaticRecipeUnlockModule.java | 6 +- .../module/DyeableItemFramesModule.java | 4 +- .../tweaks/module/HoeHarvestingModule.java | 33 ++++---- .../tweaks/module/MapWashingModule.java | 11 ++- .../module/PoisonPotatoUsageModule.java | 3 +- .../recipe/ElytraDuplicationRecipe.java | 55 +++++------- .../world/block/ChorusVegetationBlock.java | 16 ++-- .../jei/BackpackRecipeTransferHandler.java | 3 +- .../jei/ElytraDuplicationExtension.java | 20 ++--- .../resources/META-INF/accesstransformer.cfg | 20 +++-- 63 files changed, 403 insertions(+), 640 deletions(-) diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/block/TinyPotatoBlock.java b/src/main/java/org/violetmoon/quark/addons/oddities/block/TinyPotatoBlock.java index b0c9098a62..ae4789957b 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/block/TinyPotatoBlock.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/block/TinyPotatoBlock.java @@ -2,6 +2,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.component.DataComponents; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -19,6 +20,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.RenderShape; @@ -37,10 +39,8 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; - import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - import org.violetmoon.quark.addons.oddities.block.be.TinyPotatoBlockEntity; import org.violetmoon.quark.addons.oddities.item.TinyPotatoBlockItem; import org.violetmoon.quark.addons.oddities.module.TinyPotatoModule; @@ -113,12 +113,12 @@ public void onRemove(@NotNull BlockState state, @NotNull Level world, @NotNull B @SuppressWarnings("deprecation") @Override - public ItemStack getCloneItemStack(BlockGetter level, BlockPos pos, BlockState state) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state) { ItemStack stack = super.getCloneItemStack(level, pos, state); BlockEntity be = level.getBlockEntity(pos); if(be instanceof TinyPotatoBlockEntity tater) { if(tater.hasCustomName()) - stack.setHoverName(tater.getCustomName()); + stack.set(DataComponents.CUSTOM_NAME, tater.getCustomName()); if(tater.angry) ItemNBTHelper.setBoolean(stack, ANGRY, true); @@ -170,7 +170,7 @@ public BlockState updateShape(BlockState state, @NotNull Direction facing, @NotN @Override public void setPlacedBy(@NotNull Level world, @NotNull BlockPos pos, @NotNull BlockState state, @Nullable LivingEntity living, ItemStack stack) { - boolean hasCustomName = stack.hasCustomHoverName(); + boolean hasCustomName = stack.has(DataComponents.CUSTOM_NAME); boolean isAngry = isAngry(stack); if(hasCustomName || isAngry) { BlockEntity be = world.getBlockEntity(pos); diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/block/be/CrateBlockEntity.java b/src/main/java/org/violetmoon/quark/addons/oddities/block/be/CrateBlockEntity.java index 383550fe0c..be17095718 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/block/be/CrateBlockEntity.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/block/be/CrateBlockEntity.java @@ -2,6 +2,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvent; @@ -23,9 +24,7 @@ import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.EmptyHandler; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.addons.oddities.block.CrateBlock; import org.violetmoon.quark.addons.oddities.capability.CrateItemHandler; import org.violetmoon.quark.addons.oddities.inventory.CrateMenu; @@ -72,17 +71,15 @@ public void tick() { } @Override - protected void saveAdditional(@NotNull CompoundTag compound) { - super.saveAdditional(compound); - - compound.merge(itemHandler().serializeNBT()); + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider provider) { + super.saveAdditional(tag, provider); + tag.merge(itemHandler().serializeNBT(provider)); } @Override - public void load(@NotNull CompoundTag nbt) { - super.load(nbt); - - itemHandler().deserializeNBT(nbt); + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider provider) { + super.loadAdditional(tag, provider); + itemHandler().deserializeNBT(provider, tag); } public CrateItemHandler itemHandler() { @@ -266,5 +263,4 @@ private void playSound(BlockState state, SoundEvent sound) { double d2 = (double) this.worldPosition.getZ() + 0.5D; this.level.playSound(null, d0, d1, d2, sound, SoundSource.BLOCKS, 0.5F, this.level.random.nextFloat() * 0.1F + 0.9F); } - } diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/block/be/MagnetBlockEntity.java b/src/main/java/org/violetmoon/quark/addons/oddities/block/be/MagnetBlockEntity.java index a5f717a3b5..26b74acd2d 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/block/be/MagnetBlockEntity.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/block/be/MagnetBlockEntity.java @@ -18,7 +18,6 @@ import org.violetmoon.quark.addons.oddities.module.MagnetsModule; import org.violetmoon.quark.api.IMagneticEntity; import org.violetmoon.quark.content.automation.entity.Gravisand; -import org.violetmoon.quark.content.experimental.module.VariantSelectorModule; import org.violetmoon.quark.mixin.mixins.accessor.AccessorServerGamePacketListener; import org.violetmoon.zeta.api.ICollateralMover; @@ -59,7 +58,7 @@ private void magnetize(BlockState state, Direction dir, Direction moveDir, int p } if (targetState.getBlock() == MagnetsModule.magnetized_block && level.getBlockEntity(targetPos) instanceof MagnetizedBlockBlockEntity mbe) { - targetState = mbe.blockState; + targetState = mbe.getBlockState(); } if (!canFluxPenetrate(targetPos, targetState)) break; @@ -125,9 +124,9 @@ private void pushEntity(Direction dir, double magnitude, Entity e) { } private boolean canPullEntity(Entity e) { - if (this.level.isClientSide) { - if (MagnetsModule.affectsArmor && e instanceof Player) { - for (var armor : e.getArmorSlots()) { + if (level.isClientSide) { + if (MagnetsModule.affectsArmor && e instanceof Player player) { + for (var armor : player.getArmorSlots()) { if (MagnetSystem.isItemMagnetic(armor.getItem())) return true; } } @@ -145,8 +144,8 @@ private boolean canPullEntity(Entity e) { return MagnetSystem.isBlockMagnetic(fb.getBlockState()); } - if (MagnetsModule.affectsArmor) { - for (var armor : e.getArmorSlots()) { + if (MagnetsModule.affectsArmor && e instanceof Player player) { + for (var armor : player.getArmorSlots()) { if (MagnetSystem.isItemMagnetic(armor.getItem())) return true; } } diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/capability/CrateItemHandler.java b/src/main/java/org/violetmoon/quark/addons/oddities/capability/CrateItemHandler.java index 26def490b8..5a824e0a5a 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/capability/CrateItemHandler.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/capability/CrateItemHandler.java @@ -1,6 +1,7 @@ package org.violetmoon.quark.addons.oddities.capability; import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -9,10 +10,8 @@ import net.minecraft.world.Containers; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import net.minecraftforge.items.ItemStackHandler; - +import net.neoforged.neoforge.items.ItemStackHandler; import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.addons.oddities.module.CrateModule; import org.violetmoon.quark.base.handler.SortingHandler; @@ -159,11 +158,10 @@ protected void onLoad() { } @Override - public CompoundTag serializeNBT() { + public CompoundTag serializeNBT(HolderLookup.Provider provider) { ListTag items = new ListTag(); for(ItemStack stack : stacks) { - if(!stack.isEmpty()) - items.add(stack.save(new CompoundTag())); + if(!stack.isEmpty()) items.add(stack.save(provider, new CompoundTag())); } CompoundTag nbt = new CompoundTag(); nbt.put("stacks", items); @@ -171,13 +169,12 @@ public CompoundTag serializeNBT() { } @Override - public void deserializeNBT(CompoundTag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, CompoundTag nbt) { stacks = NonNullList.withSize(maxItems, ItemStack.EMPTY); ListTag items = nbt.getList("stacks", Tag.TAG_COMPOUND); for(int i = 0; i < items.size(); i++) - stacks.set(i, ItemStack.of(items.getCompound(i))); + stacks.set(i, ItemStack.parseOptional(provider, items.getCompound(i))); onLoad(); } - } diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/client/screen/MatrixEnchantingPlusButton.java b/src/main/java/org/violetmoon/quark/addons/oddities/client/screen/MatrixEnchantingPlusButton.java index 079f423125..1022e9d91b 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/client/screen/MatrixEnchantingPlusButton.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/client/screen/MatrixEnchantingPlusButton.java @@ -16,7 +16,7 @@ public MatrixEnchantingPlusButton(int x, int y, OnPress onPress) { } @Override - public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + public void renderWidget(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { boolean hovered = mouseX >= getX() && mouseY >= getY() && mouseX < getX() + width && mouseY < getY() + height; if(!visible) return; diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/inventory/BackpackMenu.java b/src/main/java/org/violetmoon/quark/addons/oddities/inventory/BackpackMenu.java index 2b805bc17d..bc974efa0e 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/inventory/BackpackMenu.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/inventory/BackpackMenu.java @@ -8,9 +8,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.*; import net.minecraft.world.item.ItemStack; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.addons.oddities.inventory.slot.BackpackSlot; import org.violetmoon.quark.addons.oddities.inventory.slot.CachedItemHandlerSlot; import org.violetmoon.quark.addons.oddities.module.BackpackModule; @@ -79,7 +77,7 @@ else if(index == 0) // crafting result slot.onQuickCraft(stack, baseStack); } - else if(slotType != null && slotType.getType() == Type.ARMOR && !this.slots.get(equipIndex).hasItem()) { // shift clicking armor + else if(slotType != null && slotType.getType() == Type.HUMANOID_ARMOR && !this.slots.get(equipIndex).hasItem()) { // shift clicking armor if(!this.moveItemStackTo(stack, equipIndex, equipIndex + 1, false)) return ItemStack.EMPTY; } @@ -140,7 +138,7 @@ public boolean moveItemStackTo(ItemStack stack, int start, int length, boolean r int maxStack = Math.min(stack.getMaxStackSize(), slot.getMaxStackSize()); int rmv = Math.min(maxStack, stack.getCount()); - if(slot.mayPlace(cloneStack(stack, rmv)) && existingStack.getItem().equals(stack.getItem()) && ItemStack.isSameItemSameTags(stack, existingStack)) { + if(slot.mayPlace(cloneStack(stack, rmv)) && existingStack.getItem().equals(stack.getItem()) && ItemStack.isSameItemSameComponents(stack, existingStack)) { int existingSize = existingStack.getCount() + stack.getCount(); if(existingSize <= maxStack) { @@ -209,5 +207,4 @@ public static void saveCraftingInventory(Player player) { public @NotNull MenuType getType() { return BackpackModule.menyType; } - } diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/module/TinyPotatoModule.java b/src/main/java/org/violetmoon/quark/addons/oddities/module/TinyPotatoModule.java index 22cea718d6..57d587c415 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/module/TinyPotatoModule.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/module/TinyPotatoModule.java @@ -84,7 +84,7 @@ private void registerTaters(ZAddModels event, String mod, Set usedNames, usedNames.add(path); path = path.substring("models/".length(), path.length() - ".json".length()); - event.register(Quark.asResource(path)); + event.register(ModelResourceLocation.standalone(Quark.asResource(path))); } } } diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/module/TotemOfHoldingModule.java b/src/main/java/org/violetmoon/quark/addons/oddities/module/TotemOfHoldingModule.java index 20b5ef38d6..d28782564b 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/module/TotemOfHoldingModule.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/module/TotemOfHoldingModule.java @@ -10,7 +10,6 @@ import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; - import org.violetmoon.quark.addons.oddities.client.render.entity.TotemOfHoldingRenderer; import org.violetmoon.quark.addons.oddities.entity.TotemOfHoldingEntity; import org.violetmoon.quark.base.Quark; @@ -61,7 +60,6 @@ public final void register(ZRegister event) { .updateInterval(128) // update interval .fireImmune() .setShouldReceiveVelocityUpdates(false) - .setCustomClientFactory((spawnEntity, world) -> new TotemOfHoldingEntity(totemType, world)) .build("totem"); Quark.ZETA.registry.register(totemType, "totem", Registries.ENTITY_TYPE); } @@ -126,7 +124,7 @@ public final void clientSetup(ZClientSetup event) { @LoadEvent public void registerAdditionalModels(ZAddModels event) { - event.register(new ModelResourceLocation(Quark.MOD_ID, "extra/totem_of_holding", "inventory")); + event.register(ModelResourceLocation.inventory(Quark.asResource("extra/totem_of_holding"))); } } } diff --git a/src/main/java/org/violetmoon/quark/base/Quark.java b/src/main/java/org/violetmoon/quark/base/Quark.java index aa5cd6bb65..52bed50375 100644 --- a/src/main/java/org/violetmoon/quark/base/Quark.java +++ b/src/main/java/org/violetmoon/quark/base/Quark.java @@ -4,6 +4,7 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; +import net.neoforged.bus.api.IEventBus; import net.neoforged.fml.common.Mod; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -46,10 +47,10 @@ public class Quark { () -> TerrablenderUndergroundBiomeHandler::new, () -> VanillaUndergroundBiomeHandler::new); - public Quark() { + public Quark(IEventBus bus) { instance = this; - ZETA.start(); + ZETA.start(bus); proxy = Env.unsafeRunForDist(() -> ClientProxy::new, () -> CommonProxy::new); proxy.start(); diff --git a/src/main/java/org/violetmoon/quark/base/QuarkClient.java b/src/main/java/org/violetmoon/quark/base/QuarkClient.java index cc92759115..6b3a3e845b 100644 --- a/src/main/java/org/violetmoon/quark/base/QuarkClient.java +++ b/src/main/java/org/violetmoon/quark/base/QuarkClient.java @@ -1,6 +1,5 @@ package org.violetmoon.quark.base; -import net.minecraftforge.client.event.RegisterColorHandlersEvent; import org.violetmoon.quark.integration.lootr.client.ClientLootrIntegration; import org.violetmoon.quark.integration.lootr.client.IClientLootrIntegration; import org.violetmoon.zeta.client.ClientTicker; diff --git a/src/main/java/org/violetmoon/quark/base/client/config/QuarkConfigHomeScreen.java b/src/main/java/org/violetmoon/quark/base/client/config/QuarkConfigHomeScreen.java index 8a93607c8f..0658836da6 100644 --- a/src/main/java/org/violetmoon/quark/base/client/config/QuarkConfigHomeScreen.java +++ b/src/main/java/org/violetmoon/quark/base/client/config/QuarkConfigHomeScreen.java @@ -48,37 +48,37 @@ protected void init() { protected float partialTicks; @Override - public void renderBackground(GuiGraphics guiGraphics) { + public void renderBackground(GuiGraphics graphics, int mouseX, int mouseY, float partialTick) { time += partialTicks; Minecraft mc = Minecraft.getInstance(); + if(mc.level == null) { float spin = partialTicks * 2; float blur = 0.85F; - if(time < 20F && !QuarkGeneralConfig.disableQMenuEffects) { + if (time < 20F && !QuarkGeneralConfig.disableQMenuEffects) { spin += (20F - time); blur = (time / 20F) * 0.75F + 0.1F; } - PANORAMA.render(spin, blur); - } else - super.renderBackground(guiGraphics); + PANORAMA.render(graphics, this.width, this.height, spin, blur); + } else { + super.renderBackground(graphics, mouseX, mouseY, partialTick); + } int boxWidth = 400; - guiGraphics.fill(width / 2 - boxWidth / 2, 0, width / 2 + boxWidth / 2, this.height, 0x66000000); - guiGraphics.fill(width / 2 - boxWidth / 2 - 1, 0, width / 2 - boxWidth / 2, this.height, 0x66999999); // nice - guiGraphics.fill(width / 2 + boxWidth / 2, 0, width / 2 + boxWidth / 2 + 1, this.height, 0x66999999); + graphics.fill(width / 2 - boxWidth / 2, 0, width / 2 + boxWidth / 2, this.height, 0x66000000); + graphics.fill(width / 2 - boxWidth / 2 - 1, 0, width / 2 - boxWidth / 2, this.height, 0x66999999); // nice + graphics.fill(width / 2 + boxWidth / 2, 0, width / 2 + boxWidth / 2 + 1, this.height, 0x66999999); } @Override public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { this.partialTicks = partialTicks; - super.render(guiGraphics, mouseX, mouseY, partialTicks); guiGraphics.drawCenteredString(font, I18n.get("quark.gui.config.subheader1", ChatFormatting.LIGHT_PURPLE, ContributorRewardHandler.featuredPatron, ChatFormatting.RESET), width / 2, 28, 0x9EFFFE); guiGraphics.drawCenteredString(font, I18n.get("quark.gui.config.subheader2"), width / 2, 38, 0x9EFFFE); } - } diff --git a/src/main/java/org/violetmoon/quark/base/client/render/QuarkArmorModel.java b/src/main/java/org/violetmoon/quark/base/client/render/QuarkArmorModel.java index 8955641670..6579361a8f 100644 --- a/src/main/java/org/violetmoon/quark/base/client/render/QuarkArmorModel.java +++ b/src/main/java/org/violetmoon/quark/base/client/render/QuarkArmorModel.java @@ -78,9 +78,9 @@ public void setupAnim(@NotNull LivingEntity entity, float limbSwing, float limbS } @Override - public void renderToBuffer(@NotNull PoseStack ms, @NotNull VertexConsumer buffer, int light, int overlay, float r, float g, float b, float a) { + public void renderToBuffer(PoseStack poseStack, VertexConsumer consumer, int light, int overlay, int color) { setPartVisibility(slot); - super.renderToBuffer(ms, buffer, light, overlay, r, g, b, a); + super.renderToBuffer(poseStack, consumer, light, overlay, color); } // [VanillaCopy] HumanoidArmorLayer diff --git a/src/main/java/org/violetmoon/quark/base/client/render/QuarkBoatRenderer.java b/src/main/java/org/violetmoon/quark/base/client/render/QuarkBoatRenderer.java index 0ae02ecf99..4ebf3507d3 100644 --- a/src/main/java/org/violetmoon/quark/base/client/render/QuarkBoatRenderer.java +++ b/src/main/java/org/violetmoon/quark/base/client/render/QuarkBoatRenderer.java @@ -80,7 +80,7 @@ public void render(Boat boat, float yaw, float partialTicks, PoseStack matrix, @ matrix.mulPose(Axis.YP.rotationDegrees(90.0F)); model.setupAnim(boat, partialTicks, 0.0F, -0.1F, 0.0F, 0.0F); VertexConsumer vertexconsumer = buffer.getBuffer(model.renderType(loc)); - model.renderToBuffer(matrix, vertexconsumer, light, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); + model.renderToBuffer(matrix, vertexconsumer, light, OverlayTexture.NO_OVERLAY); if(!boat.isUnderWater()) { VertexConsumer waterMask = buffer.getBuffer(RenderType.waterMask()); model.waterPatch().render(matrix, waterMask, light, OverlayTexture.NO_OVERLAY); diff --git a/src/main/java/org/violetmoon/quark/base/handler/WoodSetHandler.java b/src/main/java/org/violetmoon/quark/base/handler/WoodSetHandler.java index 04ecac333f..a28f861c93 100644 --- a/src/main/java/org/violetmoon/quark/base/handler/WoodSetHandler.java +++ b/src/main/java/org/violetmoon/quark/base/handler/WoodSetHandler.java @@ -90,13 +90,11 @@ public static void register(ZRegister event) { quarkBoatEntityType = EntityType.Builder.of(QuarkBoat::new, MobCategory.MISC) .sized(1.375F, 0.5625F) .clientTrackingRange(10) - .setCustomClientFactory((spawnEntity, world) -> new QuarkBoat(quarkBoatEntityType, world)) .build("quark_boat"); quarkChestBoatEntityType = EntityType.Builder.of(QuarkChestBoat::new, MobCategory.MISC) .sized(1.375F, 0.5625F) .clientTrackingRange(10) - .setCustomClientFactory((spawnEntity, world) -> new QuarkChestBoat(quarkChestBoatEntityType, world)) .build("quark_chest_boat"); Quark.ZETA.registry.register(quarkBoatEntityType, "quark_boat", Registries.ENTITY_TYPE); diff --git a/src/main/java/org/violetmoon/quark/base/item/boat/QuarkBoat.java b/src/main/java/org/violetmoon/quark/base/item/boat/QuarkBoat.java index 01d8c51a26..0f393b9ceb 100644 --- a/src/main/java/org/violetmoon/quark/base/item/boat/QuarkBoat.java +++ b/src/main/java/org/violetmoon/quark/base/item/boat/QuarkBoat.java @@ -11,9 +11,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.Level; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.base.handler.WoodSetHandler; import org.violetmoon.quark.base.handler.WoodSetHandler.QuarkBoatType; @@ -34,9 +32,9 @@ public QuarkBoat(Level world, double x, double y, double z) { } @Override - protected void defineSynchedData() { - super.defineSynchedData(); - entityData.define(DATA_QUARK_TYPE, "blossom"); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(DATA_QUARK_TYPE, "blossom"); } public String getQuarkBoatType() { diff --git a/src/main/java/org/violetmoon/quark/base/item/boat/QuarkChestBoat.java b/src/main/java/org/violetmoon/quark/base/item/boat/QuarkChestBoat.java index 1c63b89564..15aa93a08e 100644 --- a/src/main/java/org/violetmoon/quark/base/item/boat/QuarkChestBoat.java +++ b/src/main/java/org/violetmoon/quark/base/item/boat/QuarkChestBoat.java @@ -35,9 +35,9 @@ public QuarkChestBoat(Level world, double x, double y, double z) { } @Override - protected void defineSynchedData() { - super.defineSynchedData(); - entityData.define(DATA_QUARK_TYPE, "blossom"); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(DATA_QUARK_TYPE, "blossom"); } public String getQuarkBoatType() { diff --git a/src/main/java/org/violetmoon/quark/content/automation/block/ChuteBlock.java b/src/main/java/org/violetmoon/quark/content/automation/block/ChuteBlock.java index b1a6cb2b38..c5291d4fe5 100755 --- a/src/main/java/org/violetmoon/quark/content/automation/block/ChuteBlock.java +++ b/src/main/java/org/violetmoon/quark/content/automation/block/ChuteBlock.java @@ -1,10 +1,7 @@ package org.violetmoon.quark.content.automation.block; -import com.mojang.serialization.JsonOps; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.RegistryOps; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -15,17 +12,13 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; - import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - import org.violetmoon.quark.content.automation.block.be.ChuteBlockEntity; -import org.violetmoon.quark.content.world.module.AncientWoodModule; import org.violetmoon.zeta.block.ZetaBlock; import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.registry.RenderLayerRegistry; @@ -81,7 +74,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder SoundEvents.WOOD_BREAK, () -> SoundEvents.GRASS_STEP, () -> SoundEvents.WOOD_PLACE, () -> SoundEvents.WOOD_HIT, () -> SoundEvents.WOOD_FALL); + private static final SoundType WOOD_WITH_PLANT_STEP = new DeferredSoundType(1.0F, 1.0F, () -> SoundEvents.WOOD_BREAK, () -> SoundEvents.GRASS_STEP, () -> SoundEvents.WOOD_PLACE, () -> SoundEvents.WOOD_HIT, () -> SoundEvents.WOOD_FALL); public static final BooleanProperty FULL = BooleanProperty.create("full"); @@ -90,10 +82,9 @@ protected void createBlockStateDefinition(StateDefinition.Builder players = level.getEntitiesOfClass(Player.class, new AABB(be.worldPosition.offset(-range, -range, -range), be.worldPosition.offset(range, range, range))); + List players = level.getEntitiesOfClass(Player.class, new AABB(be.worldPosition.offset(-range, -range, -range))); EnderMan fakeEnderman = new EnderMan(EntityType.ENDERMAN, level); fakeEnderman.setPos(pos.getX() + 0.5, pos.getY() + 0.5 - fakeEnderman.getEyeHeight(), pos.getZ() + 0.5); diff --git a/src/main/java/org/violetmoon/quark/content/automation/entity/Gravisand.java b/src/main/java/org/violetmoon/quark/content/automation/entity/Gravisand.java index b66397d80b..c20a930cc5 100755 --- a/src/main/java/org/violetmoon/quark/content/automation/entity/Gravisand.java +++ b/src/main/java/org/violetmoon/quark/content/automation/entity/Gravisand.java @@ -3,8 +3,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; @@ -22,10 +20,7 @@ import net.minecraft.world.level.block.FallingBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.network.NetworkHooks; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.content.automation.module.GravisandModule; public class Gravisand extends FallingBlockEntity { @@ -61,15 +56,15 @@ public void tick() { BlockPos blockpos1 = this.blockPosition(); boolean aboveHasCollision = !level().getBlockState(blockpos1.above()).getCollisionShape(level(), blockpos1.above()).isEmpty(); if(!this.level().isClientSide && getFallDirection() > 0 && !isRemoved() && aboveHasCollision) { - Block block = this.blockState.getBlock(); + Block block = this.getBlockState().getBlock(); BlockState blockstate = this.level().getBlockState(blockpos1); this.setDeltaMovement(this.getDeltaMovement().multiply(0.7D, 0.5D, 0.7D)); boolean flag2 = blockstate.canBeReplaced(new DirectionalPlaceContext(this.level(), blockpos1, Direction.UP, ItemStack.EMPTY, Direction.DOWN)); boolean flag3 = FallingBlock.isFree(this.level().getBlockState(blockpos1.above())); - boolean flag4 = this.blockState.canSurvive(this.level(), blockpos1) && !flag3; + boolean flag4 = this.getBlockState().canSurvive(this.level(), blockpos1) && !flag3; if(flag2 && flag4) { - if(this.level().setBlock(blockpos1, this.blockState, 3)) { + if(this.level().setBlock(blockpos1, this.getBlockState(), 3)) { ((ServerLevel) this.level()).getChunkSource().chunkMap.broadcast(this, new ClientboundBlockUpdatePacket(blockpos1, this.level().getBlockState(blockpos1))); this.discard(); } else if(this.dropItem && this.level().getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { @@ -88,10 +83,9 @@ public void tick() { } @Override - protected void defineSynchedData() { - super.defineSynchedData(); - - entityData.define(DIRECTION, 0F); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(DIRECTION, 0F); } @Override @@ -114,21 +108,12 @@ private float getFallDirection() { @Override protected void addAdditionalSaveData(@NotNull CompoundTag compound) { super.addAdditionalSaveData(compound); - compound.putFloat(TAG_DIRECTION, getFallDirection()); } @Override protected void readAdditionalSaveData(@NotNull CompoundTag compound) { super.readAdditionalSaveData(compound); - entityData.set(DIRECTION, compound.getFloat(TAG_DIRECTION)); } - - @NotNull - @Override - public Packet getAddEntityPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - } diff --git a/src/main/java/org/violetmoon/quark/content/automation/module/CrafterModule.java b/src/main/java/org/violetmoon/quark/content/automation/module/CrafterModule.java index 91b77a291f..80f1cbf896 100644 --- a/src/main/java/org/violetmoon/quark/content/automation/module/CrafterModule.java +++ b/src/main/java/org/violetmoon/quark/content/automation/module/CrafterModule.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.material.MapColor; -import net.minecraftforge.common.extensions.IForgeMenuType; +import net.neoforged.neoforge.common.extensions.IMenuTypeExtension; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.automation.block.CrafterBlock; import org.violetmoon.quark.content.automation.block.be.CrafterBlockEntity; @@ -48,7 +48,7 @@ public final void register(ZRegister event) { .ignitedByLava() ); - menuType = IForgeMenuType.create(CrafterMenu::fromNetwork); + menuType = IMenuTypeExtension.create(CrafterMenu::fromNetwork); Quark.ZETA.registry.register(menuType, "crafter", Registries.MENU); blockEntityType = BlockEntityType.Builder.of(CrafterBlockEntity::new, crafter).build(null); diff --git a/src/main/java/org/violetmoon/quark/content/automation/module/GravisandModule.java b/src/main/java/org/violetmoon/quark/content/automation/module/GravisandModule.java index 9df3654bc1..ff38592693 100755 --- a/src/main/java/org/violetmoon/quark/content/automation/module/GravisandModule.java +++ b/src/main/java/org/violetmoon/quark/content/automation/module/GravisandModule.java @@ -34,7 +34,6 @@ public final void register(ZRegister event) { .sized(0.98F, 0.98F) .clientTrackingRange(10) .updateInterval(20) // update interval - .setCustomClientFactory((spawnEntity, world) -> new Gravisand(gravisandType, world)) .build("gravisand"); Quark.ZETA.registry.register(gravisandType, "gravisand", Registries.ENTITY_TYPE); } diff --git a/src/main/java/org/violetmoon/quark/content/building/entity/Stool.java b/src/main/java/org/violetmoon/quark/content/building/entity/Stool.java index 220b371189..c57762d855 100644 --- a/src/main/java/org/violetmoon/quark/content/building/entity/Stool.java +++ b/src/main/java/org/violetmoon/quark/content/building/entity/Stool.java @@ -3,8 +3,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MoverType; @@ -13,10 +12,7 @@ import net.minecraft.world.level.block.piston.PistonMovingBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.network.NetworkHooks; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.content.building.block.StoolBlock; import java.util.List; @@ -76,12 +72,12 @@ public void tick() { } @Override - public double getPassengersRidingOffset() { - return -0.3; + public Vec3 getPassengerRidingPosition(Entity entity) { + return this.position().add(this.getPassengerAttachmentPoint(entity, entity.getType().getDimensions(), -0.3F)); } @Override - protected void defineSynchedData() { + protected void defineSynchedData(SynchedEntityData.Builder builder) { // NO-OP } @@ -94,10 +90,4 @@ protected void readAdditionalSaveData(@NotNull CompoundTag compound) { protected void addAdditionalSaveData(@NotNull CompoundTag compound) { // NO-OP } - - @Override - public Packet getAddEntityPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/GlassItemFrameModule.java b/src/main/java/org/violetmoon/quark/content/building/module/GlassItemFrameModule.java index fb087be6ae..7c850f8b77 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/GlassItemFrameModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/GlassItemFrameModule.java @@ -6,7 +6,6 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.item.Item; - import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.building.client.render.entity.GlassItemFrameRenderer; import org.violetmoon.quark.content.building.entity.GlassItemFrame; @@ -50,7 +49,6 @@ public final void register(ZRegister event) { .clientTrackingRange(10) .updateInterval(Integer.MAX_VALUE) // update interval .setShouldReceiveVelocityUpdates(false) - .setCustomClientFactory((spawnEntity, world) -> new GlassItemFrame(glassFrameEntity, world)) .build("glass_frame"); Quark.ZETA.registry.register(glassFrameEntity, "glass_frame", Registries.ENTITY_TYPE); @@ -76,8 +74,7 @@ public final void clientSetup(ZClientSetup event) { @LoadEvent public void registerAdditionalModels(ZAddModels event) { - event.register(new ModelResourceLocation(Quark.MOD_ID, "extra/glass_item_frame", "inventory")); + event.register(ModelResourceLocation.inventory(Quark.asResource("extra/glass_item_frame"))); } - } } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/IndustrialPaletteModule.java b/src/main/java/org/violetmoon/quark/content/building/module/IndustrialPaletteModule.java index ad6941ecf7..7e26b7d4d4 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/IndustrialPaletteModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/IndustrialPaletteModule.java @@ -6,8 +6,6 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.PushReaction; -import net.minecraftforge.common.util.ForgeSoundType; - import org.violetmoon.quark.content.building.block.VariantLadderBlock; import org.violetmoon.zeta.block.IZetaBlock; import org.violetmoon.zeta.block.ZetaBlock; @@ -25,11 +23,11 @@ public class IndustrialPaletteModule extends ZetaModule { private static final SoundType IRON_LADDER_SOUND_TYPE = new SoundType(1.0F, 1.0F, - () -> SoundEvents.METAL_BREAK, - () -> SoundEvents.LADDER_STEP, - () -> SoundEvents.METAL_PLACE, - () -> SoundEvents.METAL_HIT, - () -> SoundEvents.LADDER_FALL); + SoundEvents.METAL_BREAK, + SoundEvents.LADDER_STEP, + SoundEvents.METAL_PLACE, + SoundEvents.METAL_HIT, + SoundEvents.LADDER_FALL); @Config(flag = "iron_plates") public static boolean enableIronPlates = true; @@ -60,8 +58,6 @@ public final void register(ZRegister event) { .sound(IRON_LADDER_SOUND_TYPE) .noOcclusion() .pushReaction(PushReaction.DESTROY), false - ) - .setCondition(ironLadderCond); + ).setCondition(ironLadderCond); } - } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/RopeModule.java b/src/main/java/org/violetmoon/quark/content/building/module/RopeModule.java index e850e806f1..5d067fd192 100755 --- a/src/main/java/org/violetmoon/quark/content/building/module/RopeModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/RopeModule.java @@ -1,8 +1,8 @@ package org.violetmoon.quark.content.building.module; import net.minecraft.core.BlockPos; -import net.minecraft.core.BlockSource; import net.minecraft.core.Direction; +import net.minecraft.core.dispenser.BlockSource; import net.minecraft.core.dispenser.OptionalDispenseItemBehavior; import net.minecraft.sounds.SoundSource; import net.minecraft.world.item.ItemStack; @@ -12,7 +12,6 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MapColor; - import org.jetbrains.annotations.NotNull; import org.violetmoon.quark.content.building.block.RopeBlock; import org.violetmoon.zeta.config.Config; @@ -58,9 +57,9 @@ public static class BehaviourRope extends OptionalDispenseItemBehavior { @NotNull @Override protected ItemStack execute(BlockSource source, @NotNull ItemStack stack) { - Direction facing = source.getBlockState().getValue(DispenserBlock.FACING); - BlockPos pos = source.getPos().relative(facing); - Level world = source.getLevel(); + Direction facing = source.state().getValue(DispenserBlock.FACING); + BlockPos pos = source.pos().relative(facing); + Level world = source.level(); setSuccess(false); BlockState state = world.getBlockState(pos); @@ -76,13 +75,9 @@ protected ItemStack execute(BlockSource source, @NotNull ItemStack stack) { world.playSound(null, pos, soundtype.getPlaceSound(), SoundSource.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F); setSuccess(true); stack.shrink(1); - return stack; } - return stack; } - } - } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/StoolsModule.java b/src/main/java/org/violetmoon/quark/content/building/module/StoolsModule.java index d2d8b61e2d..df76f63b1a 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/StoolsModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/StoolsModule.java @@ -1,8 +1,17 @@ package org.violetmoon.quark.content.building.module; -import java.util.ArrayList; -import java.util.List; - +import net.minecraft.client.renderer.entity.EntityRenderers; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.Registries; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.building.block.StoolBlock; import org.violetmoon.quark.content.building.client.render.entity.StoolEntityRenderer; @@ -19,20 +28,8 @@ import org.violetmoon.zeta.util.Hint; import org.violetmoon.zeta.util.MiscUtil; -import net.minecraft.client.renderer.entity.EntityRenderers; -import net.minecraft.core.Direction; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.TagKey; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.item.DyeColor; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockState; +import java.util.ArrayList; +import java.util.List; @ZetaLoadModule(category = "building") public class StoolsModule extends ZetaModule { @@ -61,7 +58,6 @@ public final void register(ZRegister event) { .clientTrackingRange(3) .updateInterval(Integer.MAX_VALUE) // update interval .setShouldReceiveVelocityUpdates(false) - .setCustomClientFactory((spawnEntity, world) -> new Stool(stoolEntity, world)) .build("stool"); Quark.ZETA.registry.register(stoolEntity, "stool", Registries.ENTITY_TYPE); } @@ -85,8 +81,7 @@ public static class Client extends StoolsModule { @LoadEvent public final void clientSetup(ZClientSetup event) { - EntityRenderers.register(stoolEntity, StoolEntityRenderer::new); - } + EntityRenderers.register(stoolEntity, StoolEntityRenderer::new); + } } - } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java b/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java index 16934788c2..f1797527f8 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java @@ -1,6 +1,13 @@ package org.violetmoon.quark.content.building.module; +import net.minecraft.core.BlockPos; import net.minecraft.core.registries.Registries; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.LanternBlock; +import net.minecraft.world.level.block.state.BlockState; import net.neoforged.neoforge.common.ItemAbilities; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.building.block.WoodPostBlock; @@ -14,15 +21,6 @@ import org.violetmoon.zeta.util.VanillaWoods.Wood; import org.violetmoon.zeta.util.handler.ToolInteractionHandler; -import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.LanternBlock; - @ZetaLoadModule(category = "building") public class WoodenPostsModule extends ZetaModule { diff --git a/src/main/java/org/violetmoon/quark/content/building/recipe/MixedExclusionRecipe.java b/src/main/java/org/violetmoon/quark/content/building/recipe/MixedExclusionRecipe.java index 6f5d36a357..7d3e2cc12e 100644 --- a/src/main/java/org/violetmoon/quark/content/building/recipe/MixedExclusionRecipe.java +++ b/src/main/java/org/violetmoon/quark/content/building/recipe/MixedExclusionRecipe.java @@ -1,59 +1,47 @@ package org.violetmoon.quark.content.building.recipe; -import com.google.gson.JsonObject; - +import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; -import net.minecraft.core.RegistryAccess; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -import net.minecraftforge.common.crafting.IShapedRecipe; - import org.jetbrains.annotations.NotNull; public class MixedExclusionRecipe implements CraftingRecipe, IShapedRecipe { public static final RecipeSerializer SERIALIZER = new Serializer(); - private final ResourceLocation res; private NonNullList ingredients; - private final String type; + private final String group; private final ItemStack output; private final TagKey tag; private final ItemStack placeholder; - public MixedExclusionRecipe(ResourceLocation res, String type, ItemStack output, TagKey tag, ItemStack placeholder) { - this.res = res; - - this.type = type; + public MixedExclusionRecipe(String group, ItemStack output, TagKey tag, ItemStack placeholder) { + this.group = group; this.output = output; this.tag = tag; this.placeholder = placeholder; } - public static MixedExclusionRecipe forChest(String type, ResourceLocation res, boolean log) { + public static MixedExclusionRecipe forChest(String group, boolean log) { ItemStack output = new ItemStack(Items.CHEST, (log ? 4 : 1)); TagKey tag = (log ? ItemTags.LOGS : ItemTags.PLANKS); ItemStack placeholder = new ItemStack(log ? Items.OAK_LOG : Items.OAK_PLANKS); - return new MixedExclusionRecipe(res, type, output, tag, placeholder); + return new MixedExclusionRecipe(group, output, tag, placeholder); } - public static MixedExclusionRecipe forFurnace(String type, ResourceLocation res) { + public static MixedExclusionRecipe forFurnace(String group) { ItemStack output = new ItemStack(Items.FURNACE); TagKey tag = ItemTags.STONE_CRAFTING_MATERIALS; ItemStack placeholder = new ItemStack(Items.COBBLESTONE); - return new MixedExclusionRecipe(res, type, output, tag, placeholder); + return new MixedExclusionRecipe(group, output, tag, placeholder); } @Override @@ -61,21 +49,20 @@ public boolean canCraftInDimensions(int x, int y) { return x == 3 && y == 3; } - @NotNull @Override - public ItemStack assemble(@NotNull CraftingContainer arg0, RegistryAccess acc) { + @NotNull + public ItemStack assemble(CraftingInput input, HolderLookup.Provider provider) { return output.copy(); } @NotNull @Override - public ResourceLocation getId() { - return res; + public String getGroup() { + return this.group; } - @NotNull @Override - public ItemStack getResultItem(RegistryAccess acc) { + public ItemStack getResultItem(HolderLookup.Provider provider) { return output.copy(); } @@ -91,14 +78,14 @@ public CraftingBookCategory category() { } @Override - public boolean matches(CraftingContainer inv, @NotNull Level world) { - if(inv.getItem(4).isEmpty()) { + public boolean matches(CraftingInput input, Level level) { + if(input.getItem(4).isEmpty()) { ItemStack first = null; boolean foundDifference = false; for(int i = 0; i < 9; i++) if(i != 4) { // ignore center - ItemStack stack = inv.getItem(i); + ItemStack stack = input.getItem(i); if(!stack.isEmpty() && stack.is(tag)) { if(first == null) first = stack; @@ -107,20 +94,18 @@ else if(!ItemStack.isSameItem(first, stack)) } else return false; } - return foundDifference; } - return false; } @Override - public int getRecipeWidth() { + public int getWidth() { return 3; } @Override - public int getRecipeHeight() { + public int getHeight() { return 3; } @@ -145,6 +130,7 @@ public boolean isSpecial() { private static class Serializer implements RecipeSerializer { + /* @NotNull @Override public MixedExclusionRecipe fromJson(@NotNull ResourceLocation arg0, JsonObject arg1) { @@ -161,16 +147,16 @@ public MixedExclusionRecipe fromNetwork(@NotNull ResourceLocation arg0, Friendly public void toNetwork(FriendlyByteBuf arg0, MixedExclusionRecipe arg1) { arg0.writeUtf(arg1.type); } + */ - private MixedExclusionRecipe forType(ResourceLocation res, String type) { + private MixedExclusionRecipe forType(String type) { return switch(type) { - case "chest" -> MixedExclusionRecipe.forChest(type, res, false); - case "chest4" -> MixedExclusionRecipe.forChest(type, res, true); - case "furnace" -> MixedExclusionRecipe.forFurnace(type, res); + case "chest" -> MixedExclusionRecipe.forChest(type, false); + case "chest4" -> MixedExclusionRecipe.forChest(type, true); + case "furnace" -> MixedExclusionRecipe.forFurnace(type); default -> null; }; } - } } diff --git a/src/main/java/org/violetmoon/quark/content/mobs/client/model/WraithModel.java b/src/main/java/org/violetmoon/quark/content/mobs/client/model/WraithModel.java index 6300cd3c3d..14a9a42627 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/client/model/WraithModel.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/client/model/WraithModel.java @@ -2,19 +2,11 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; - import net.minecraft.client.model.EntityModel; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.CubeDeformation; -import net.minecraft.client.model.geom.builders.CubeListBuilder; -import net.minecraft.client.model.geom.builders.LayerDefinition; -import net.minecraft.client.model.geom.builders.MeshDefinition; -import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.*; import net.minecraft.client.renderer.RenderType; - -import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.content.mobs.entity.Wraith; import java.util.Random; @@ -98,14 +90,10 @@ public void setupAnim(Wraith entity, float limbSwing, float limbSwingAmount, flo } @Override - public void renderToBuffer(PoseStack matrix, @NotNull VertexConsumer bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) { - alpha *= alphaMult; - - matrix.pushPose(); - matrix.translate(0, offset, -0.1); // -0.1 is to ensure the model is inside the hitbox - main.render(matrix, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); - matrix.popPose(); - + public void renderToBuffer(PoseStack poseStack, VertexConsumer bufferIn, int packedLight, int packedOverlay, int color) { + poseStack.pushPose(); + poseStack.translate(0, offset, -0.1); // -0.1 is to ensure the model is inside the hitbox + main.render(poseStack, bufferIn, packedLight, packedOverlay, color); // TODO: change color alphaMult + poseStack.popPose(); } - } diff --git a/src/main/java/org/violetmoon/quark/content/mobs/module/CrabsModule.java b/src/main/java/org/violetmoon/quark/content/mobs/module/CrabsModule.java index b9779114f2..950531c8b6 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/module/CrabsModule.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/module/CrabsModule.java @@ -1,7 +1,28 @@ package org.violetmoon.quark.content.mobs.module; -import java.util.List; - +import com.google.common.collect.ImmutableSet; +import net.minecraft.client.renderer.entity.EntityRenderers; +import net.minecraft.core.registries.Registries; +import net.minecraft.tags.BiomeTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.npc.VillagerTrades.ItemListing; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.levelgen.Heightmap.Types; +import net.minecraft.world.level.material.Fluids; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.base.handler.QuarkSounds; import org.violetmoon.quark.content.mobs.client.render.entity.CrabRenderer; @@ -26,34 +47,8 @@ import org.violetmoon.zeta.registry.CreativeTabManager; import org.violetmoon.zeta.util.Hint; import org.violetmoon.zeta.util.ZetaEffect; -import org.violetmoon.zeta.world.EntitySpawnHandler; -import com.google.common.collect.ImmutableSet; - -import net.minecraft.client.renderer.entity.EntityRenderers; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BiomeTags; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.TagKey; -import net.minecraft.world.effect.MobEffect; -import net.minecraft.world.effect.MobEffectCategory; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.SpawnPlacements.Type; -import net.minecraft.world.entity.ai.attributes.AttributeModifier; -import net.minecraft.world.entity.ai.attributes.Attributes; -import net.minecraft.world.entity.npc.VillagerProfession; -import net.minecraft.world.entity.npc.VillagerTrades; -import net.minecraft.world.entity.npc.VillagerTrades.ItemListing; -import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.levelgen.Heightmap.Types; -import net.minecraft.world.level.material.Fluids; +import java.util.List; /** * @author WireSegal @@ -94,17 +89,15 @@ public final void register(ZRegister event) { CreativeTabManager.daisyChain(); crab_leg = new ZetaItem("crab_leg", this, new Item.Properties() .food(new FoodProperties.Builder() - .meat() .nutrition(1) - .saturationMod(0.3F) + .saturationModifier(0.3F) .build())) .setCreativeTab(CreativeModeTabs.FOOD_AND_DRINKS, Items.PUFFERFISH, false); Item cookedCrabLeg = new ZetaItem("cooked_crab_leg", this, new Item.Properties() .food(new FoodProperties.Builder() - .meat() .nutrition(8) - .saturationMod(0.8F) + .saturationModifier(0.8F) .build())) .setCreativeTab(CreativeModeTabs.FOOD_AND_DRINKS); CreativeTabManager.endDaisyChain(); @@ -122,11 +115,10 @@ public final void register(ZRegister event) { crabType = EntityType.Builder.of(Crab::new, MobCategory.CREATURE) .sized(0.9F, 0.5F) .clientTrackingRange(8) - .setCustomClientFactory((spawnEntity, world) -> new Crab(crabType, world)) .build("crab"); Quark.ZETA.registry.register(crabType, "crab", Registries.ENTITY_TYPE); - Quark.ZETA.entitySpawn.registerSpawn(crabType, MobCategory.CREATURE, Type.ON_GROUND, Types.MOTION_BLOCKING_NO_LEAVES, Crab::spawnPredicate, spawnConfig); + Quark.ZETA.entitySpawn.registerSpawn(crabType, MobCategory.CREATURE, SpawnPlacementTypes.ON_GROUND, Types.MOTION_BLOCKING_NO_LEAVES, Crab::spawnPredicate, spawnConfig); Quark.ZETA.entitySpawn.addEgg(this, crabType, 0x893c22, 0x916548, spawnConfig); event.getAdvancementModifierRegistry().addModifier(new FuriousCocktailModifier(this, () -> enableBrewing, ImmutableSet.of(resilience)) diff --git a/src/main/java/org/violetmoon/quark/content/mobs/module/ForgottenModule.java b/src/main/java/org/violetmoon/quark/content/mobs/module/ForgottenModule.java index 708f5d8535..881619d497 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/module/ForgottenModule.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/module/ForgottenModule.java @@ -1,5 +1,14 @@ package org.violetmoon.quark.content.mobs.module; +import com.google.common.collect.ImmutableSet; +import net.minecraft.client.renderer.entity.EntityRenderers; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.entity.*; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.phys.Vec3; +import net.neoforged.neoforge.event.entity.living.MobSpawnEvent; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.base.QuarkClient; import org.violetmoon.quark.base.client.handler.ModelHandler; @@ -19,24 +28,6 @@ import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.util.BooleanSuppliers; import org.violetmoon.zeta.util.Hint; -import org.violetmoon.zeta.world.EntitySpawnHandler; - -import com.google.common.collect.ImmutableSet; - -import net.minecraft.client.renderer.entity.EntityRenderers; -import net.minecraft.core.BlockPos; -import net.minecraft.core.registries.Registries; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.Mob; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.MobSpawnType; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.ServerLevelAccessor; -import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.living.MobSpawnEvent; -import net.minecraftforge.eventbus.api.Event.Result; @ZetaLoadModule(category = "mobs") public class ForgottenModule extends ZetaModule { @@ -59,7 +50,6 @@ public final void register(ZRegister event) { forgottenType = EntityType.Builder.of(Forgotten::new, MobCategory.MONSTER) .sized(0.7F, 2.4F) .clientTrackingRange(8) - .setCustomClientFactory((spawnEntity, world) -> new Forgotten(forgottenType, world)) .build("forgotten"); Quark.ZETA.registry.register(forgottenType, "forgotten", Registries.ENTITY_TYPE); diff --git a/src/main/java/org/violetmoon/quark/content/mobs/module/FoxhoundModule.java b/src/main/java/org/violetmoon/quark/content/mobs/module/FoxhoundModule.java index 4f38783723..41bb1f3e65 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/module/FoxhoundModule.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/module/FoxhoundModule.java @@ -1,7 +1,19 @@ package org.violetmoon.quark.content.mobs.module; -import static net.minecraftforge.event.entity.living.LivingChangeTargetEvent.LivingTargetType.BEHAVIOR_TARGET; - +import com.google.common.collect.ImmutableSet; +import net.minecraft.client.renderer.entity.EntityRenderers; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.Registries; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.animal.Wolf; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.Heightmap; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.mobs.client.render.entity.FoxhoundRenderer; import org.violetmoon.quark.content.mobs.entity.Foxhound; @@ -23,24 +35,8 @@ import org.violetmoon.zeta.event.play.entity.living.ZSleepingLocationCheck; import org.violetmoon.zeta.module.ZetaLoadModule; import org.violetmoon.zeta.module.ZetaModule; -import org.violetmoon.zeta.world.EntitySpawnHandler; -import com.google.common.collect.ImmutableSet; - -import net.minecraft.client.renderer.entity.EntityRenderers; -import net.minecraft.core.BlockPos; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.TagKey; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.SpawnPlacements.Type; -import net.minecraft.world.entity.animal.Wolf; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.levelgen.Heightmap; +import static net.neoforged.neoforge.event.entity.living.LivingChangeTargetEvent.LivingTargetType.BEHAVIOR_TARGET; /** * @author WireSegal @@ -73,11 +69,10 @@ public final void register(ZRegister event) { .sized(0.8F, 0.8F) .clientTrackingRange(8) .fireImmune() - .setCustomClientFactory((spawnEntity, world) -> new Foxhound(foxhoundType, world)) .build("foxhound"); Quark.ZETA.registry.register(foxhoundType, "foxhound", Registries.ENTITY_TYPE); - Quark.ZETA.entitySpawn.registerSpawn(foxhoundType, MobCategory.MONSTER, Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Foxhound::spawnPredicate, spawnConfig); + Quark.ZETA.entitySpawn.registerSpawn(foxhoundType, MobCategory.MONSTER, SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Foxhound::spawnPredicate, spawnConfig); Quark.ZETA.entitySpawn.track(foxhoundType, MobCategory.MONSTER, lesserSpawnConfig, true); Quark.ZETA.entitySpawn.addEgg(this, foxhoundType, 0x890d0d, 0xf2af4b, spawnConfig); diff --git a/src/main/java/org/violetmoon/quark/content/mobs/module/ShibaModule.java b/src/main/java/org/violetmoon/quark/content/mobs/module/ShibaModule.java index ed97f0ef96..a1edfd5d9b 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/module/ShibaModule.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/module/ShibaModule.java @@ -1,5 +1,17 @@ package org.violetmoon.quark.content.mobs.module; +import com.google.common.collect.ImmutableSet; +import net.minecraft.client.renderer.entity.EntityRenderers; +import net.minecraft.core.registries.Registries; +import net.minecraft.tags.BiomeTags; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.animal.Wolf; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.levelgen.Heightmap.Types; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.mobs.client.render.entity.ShibaRenderer; import org.violetmoon.quark.content.mobs.entity.Shiba; @@ -15,21 +27,6 @@ import org.violetmoon.zeta.module.ZetaLoadModule; import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.util.Hint; -import org.violetmoon.zeta.world.EntitySpawnHandler; - -import com.google.common.collect.ImmutableSet; - -import net.minecraft.client.renderer.entity.EntityRenderers; -import net.minecraft.core.registries.Registries; -import net.minecraft.tags.BiomeTags; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.SpawnPlacements.Type; -import net.minecraft.world.entity.animal.Animal; -import net.minecraft.world.entity.animal.Wolf; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.Items; -import net.minecraft.world.level.levelgen.Heightmap.Types; @ZetaLoadModule(category = "mobs") public class ShibaModule extends ZetaModule { @@ -52,11 +49,10 @@ public final void register(ZRegister event) { shibaType = EntityType.Builder.of(Shiba::new, MobCategory.CREATURE) .sized(0.8F, 0.8F) .clientTrackingRange(8) - .setCustomClientFactory((spawnEntity, world) -> new Shiba(shibaType, world)) .build("shiba"); Quark.ZETA.registry.register(shibaType, "shiba", Registries.ENTITY_TYPE); - Quark.ZETA.entitySpawn.registerSpawn(shibaType, MobCategory.CREATURE, Type.ON_GROUND, Types.MOTION_BLOCKING_NO_LEAVES, Animal::checkAnimalSpawnRules, spawnConfig); + Quark.ZETA.entitySpawn.registerSpawn(shibaType, MobCategory.CREATURE, SpawnPlacementTypes.ON_GROUND, Types.MOTION_BLOCKING_NO_LEAVES, Animal::checkAnimalSpawnRules, spawnConfig); Quark.ZETA.entitySpawn.addEgg(this, shibaType, 0xa86741, 0xe8d5b6, spawnConfig); event.getAdvancementModifierRegistry().addModifier(new TwoByTwoModifier(this, ImmutableSet.of(shibaType))); diff --git a/src/main/java/org/violetmoon/quark/content/mobs/module/StonelingsModule.java b/src/main/java/org/violetmoon/quark/content/mobs/module/StonelingsModule.java index c945648ebb..576e299dc4 100755 --- a/src/main/java/org/violetmoon/quark/content/mobs/module/StonelingsModule.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/module/StonelingsModule.java @@ -5,10 +5,10 @@ import net.minecraft.tags.BiomeTags; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.SpawnPlacements.Type; +import net.minecraft.world.entity.SpawnPlacementTypes; import net.minecraft.world.item.Item; import net.minecraft.world.level.levelgen.Heightmap.Types; -import net.minecraftforge.common.Tags; +import net.neoforged.neoforge.common.Tags; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.mobs.client.render.entity.StonelingRenderer; import org.violetmoon.quark.content.mobs.entity.Stoneling; @@ -62,13 +62,12 @@ public final void register(ZRegister event) { stonelingType = EntityType.Builder.of(Stoneling::new, MobCategory.CREATURE) .sized(0.5F, 0.9F) .clientTrackingRange(8) - .setCustomClientFactory((spawnEntity, world) -> new Stoneling(stonelingType, world)) .build("stoneling"); Quark.ZETA.registry.register(stonelingType, "stoneling", Registries.ENTITY_TYPE); makeStonelingTrigger = event.getAdvancementModifierRegistry().registerManualTrigger("make_stoneling"); - Quark.ZETA.entitySpawn.registerSpawn(stonelingType, MobCategory.MONSTER, Type.ON_GROUND, Types.MOTION_BLOCKING_NO_LEAVES, Stoneling::spawnPredicate, spawnConfig); + Quark.ZETA.entitySpawn.registerSpawn(stonelingType, MobCategory.MONSTER, SpawnPlacementTypes.ON_GROUND, Types.MOTION_BLOCKING_NO_LEAVES, Stoneling::spawnPredicate, spawnConfig); //secondary placement is done in GW biome definition json. Quark.ZETA.entitySpawn.addEgg(this, stonelingType, 0xA1A1A1, 0x505050, spawnConfig); } diff --git a/src/main/java/org/violetmoon/quark/content/mobs/module/ToretoiseModule.java b/src/main/java/org/violetmoon/quark/content/mobs/module/ToretoiseModule.java index ad8694b64e..0ded9ed9ab 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/module/ToretoiseModule.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/module/ToretoiseModule.java @@ -1,7 +1,14 @@ package org.violetmoon.quark.content.mobs.module; -import java.util.List; - +import com.google.common.collect.Lists; +import net.minecraft.client.renderer.entity.EntityRenderers; +import net.minecraft.core.registries.Registries; +import net.minecraft.tags.BiomeTags; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.level.levelgen.Heightmap.Types; +import net.neoforged.neoforge.common.Tags; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.mobs.client.render.entity.ToretoiseRenderer; import org.violetmoon.quark.content.mobs.entity.Toretoise; @@ -16,18 +23,8 @@ import org.violetmoon.zeta.event.load.ZRegister; import org.violetmoon.zeta.module.ZetaLoadModule; import org.violetmoon.zeta.module.ZetaModule; -import org.violetmoon.zeta.world.EntitySpawnHandler; -import com.google.common.collect.Lists; - -import net.minecraft.client.renderer.entity.EntityRenderers; -import net.minecraft.core.registries.Registries; -import net.minecraft.tags.BiomeTags; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.SpawnPlacements.Type; -import net.minecraft.world.level.levelgen.Heightmap.Types; -import net.minecraftforge.common.Tags; +import java.util.List; @ZetaLoadModule(category = "mobs") public class ToretoiseModule extends ZetaModule { @@ -67,12 +64,11 @@ public final void register(ZRegister event) { .sized(2F, 1F) .clientTrackingRange(8) .fireImmune() - .setCustomClientFactory((spawnEntity, world) -> new Toretoise(toretoiseType, world)) .build("toretoise"); Quark.ZETA.registry.register(toretoiseType, "toretoise", Registries.ENTITY_TYPE); - Quark.ZETA.entitySpawn.registerSpawn(toretoiseType, MobCategory.MONSTER, Type.ON_GROUND, Types.MOTION_BLOCKING_NO_LEAVES, Toretoise::spawnPredicate, spawnConfig); + Quark.ZETA.entitySpawn.registerSpawn(toretoiseType, MobCategory.MONSTER, SpawnPlacementTypes.ON_GROUND, Types.MOTION_BLOCKING_NO_LEAVES, Toretoise::spawnPredicate, spawnConfig); Quark.ZETA.entitySpawn.addEgg(this, toretoiseType, 0x55413b, 0x383237, spawnConfig); mineToretoiseTrigger = event.getAdvancementModifierRegistry().registerManualTrigger("mine_toretoise"); diff --git a/src/main/java/org/violetmoon/quark/content/mobs/module/WraithModule.java b/src/main/java/org/violetmoon/quark/content/mobs/module/WraithModule.java index 4d86648b62..5baffce101 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/module/WraithModule.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/module/WraithModule.java @@ -4,12 +4,10 @@ import com.google.common.collect.Lists; import net.minecraft.client.renderer.entity.EntityRenderers; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.SpawnPlacements.Type; +import net.minecraft.world.entity.SpawnPlacementTypes; import net.minecraft.world.entity.monster.Monster; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; @@ -90,7 +88,6 @@ public final void register(ZRegister event) { .sized(0.6F, 1.95F) .clientTrackingRange(8) .fireImmune() - .setCustomClientFactory((spawnEntity, world) -> new Wraith(wraithType, world)) .build("wraith"); Quark.ZETA.registry.register(wraithType, "wraith", Registries.ENTITY_TYPE); @@ -99,11 +96,10 @@ public final void register(ZRegister event) { .clientTrackingRange(4) .updateInterval(10) // update frequency .fireImmune() - .setCustomClientFactory((spawnEntity, world) -> new SoulBead(soulBeadType, world)) .build("soul_bead"); event.getRegistry().register(soulBeadType, "soul_bead", Registries.ENTITY_TYPE); - Quark.ZETA.entitySpawn.registerSpawn(wraithType, MobCategory.MONSTER, Type.ON_GROUND, Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules, spawnConfig); + Quark.ZETA.entitySpawn.registerSpawn(wraithType, MobCategory.MONSTER, SpawnPlacementTypes.ON_GROUND, Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules, spawnConfig); Quark.ZETA.entitySpawn.addEgg(this, wraithType, 0xececec, 0xbdbdbd, spawnConfig); event.getAdvancementModifierRegistry().addModifier(new MonsterHunterModifier(this, ImmutableSet.of(wraithType))); diff --git a/src/main/java/org/violetmoon/quark/content/tools/block/CloudBlock.java b/src/main/java/org/violetmoon/quark/content/tools/block/CloudBlock.java index 207d140a12..5c2174942c 100644 --- a/src/main/java/org/violetmoon/quark/content/tools/block/CloudBlock.java +++ b/src/main/java/org/violetmoon/quark/content/tools/block/CloudBlock.java @@ -3,7 +3,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; @@ -11,8 +11,8 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.SoundType; @@ -24,10 +24,8 @@ import net.minecraft.world.level.material.PushReaction; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; - import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - import org.violetmoon.quark.content.tools.block.be.CloudBlockEntity; import org.violetmoon.quark.content.tools.module.BottledCloudModule; import org.violetmoon.zeta.block.ZetaBlock; @@ -52,43 +50,38 @@ public PushReaction getPistonPushReaction(@NotNull BlockState state) { return PushReaction.BLOCK; } - @NotNull @Override - public InteractionResult use(@NotNull BlockState state, @NotNull Level world, @NotNull BlockPos pos, Player player, @NotNull InteractionHand hand, @NotNull BlockHitResult raytrace) { - ItemStack stack = player.getItemInHand(hand); - + protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { if(stack.getItem() == Items.GLASS_BOTTLE) { fillBottle(player, player.getInventory().selected); - world.removeBlock(pos, false); - return InteractionResult.sidedSuccess(world.isClientSide); + level.removeBlock(pos, false); + return ItemInteractionResult.sidedSuccess(level.isClientSide); } - if(stack.getItem() instanceof BlockItem bitem) { - Block block = bitem.getBlock(); + if(stack.getItem() instanceof BlockItem blockItem) { + Block block = blockItem.getBlock(); - UseOnContext context = new UseOnContext(player, hand, new BlockHitResult(new Vec3(0.5F, 1F, 0.5F), raytrace.getDirection(), pos, false)); + UseOnContext context = new UseOnContext(player, hand, new BlockHitResult(new Vec3(0.5F, 1F, 0.5F), result.getDirection(), pos, false)); BlockPlaceContext bcontext = new BlockPlaceContext(context); BlockState stateToPlace = block.getStateForPlacement(bcontext); - if(stateToPlace != null && stateToPlace.canSurvive(world, pos)) { - world.setBlockAndUpdate(pos, stateToPlace); - world.playSound(player, pos, stateToPlace.getSoundType().getPlaceSound(), SoundSource.BLOCKS, 1F, 1F); + if(stateToPlace != null && stateToPlace.canSurvive(level, pos)) { + level.setBlockAndUpdate(pos, stateToPlace); + level.playSound(player, pos, stateToPlace.getSoundType().getPlaceSound(), SoundSource.BLOCKS, 1F, 1F); if(!player.getAbilities().instabuild) { stack.shrink(1); fillBottle(player, 0); } - - return InteractionResult.sidedSuccess(world.isClientSide); + return ItemInteractionResult.sidedSuccess(level.isClientSide); } } - - return InteractionResult.PASS; + return ItemInteractionResult.FAIL; } @SuppressWarnings("deprecation") @Override - public ItemStack getCloneItemStack(BlockGetter level, BlockPos pos, BlockState state) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state) { return new ItemStack(BottledCloudModule.bottled_cloud); } @@ -116,5 +109,4 @@ public BlockEntity newBlockEntity(@NotNull BlockPos pos, @NotNull BlockState sta public BlockEntityTicker getTicker(@NotNull Level world, @NotNull BlockState state, @NotNull BlockEntityType type) { return createTickerHelper(type, BottledCloudModule.blockEntityType, CloudBlockEntity::tick); } - } diff --git a/src/main/java/org/violetmoon/quark/content/tools/block/be/CloudBlockEntity.java b/src/main/java/org/violetmoon/quark/content/tools/block/be/CloudBlockEntity.java index aa6b6ad69f..b2af6e148c 100644 --- a/src/main/java/org/violetmoon/quark/content/tools/block/be/CloudBlockEntity.java +++ b/src/main/java/org/violetmoon/quark/content/tools/block/be/CloudBlockEntity.java @@ -1,6 +1,7 @@ package org.violetmoon.quark.content.tools.block.be; import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.protocol.Packet; @@ -8,7 +9,6 @@ import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; - import org.violetmoon.quark.content.tools.module.BottledCloudModule; import org.violetmoon.zeta.block.be.ZetaBlockEntity; @@ -44,13 +44,12 @@ public Packet getUpdatePacket() { } @Override - public void writeSharedNBT(CompoundTag cmp) { + public void writeSharedNBT(CompoundTag cmp, HolderLookup.Provider provider) { cmp.putInt(TAG_LIVE_TIME, liveTime); } @Override - public void readSharedNBT(CompoundTag cmp) { + public void readSharedNBT(CompoundTag cmp, HolderLookup.Provider provider) { liveTime = cmp.getInt(TAG_LIVE_TIME); } - } diff --git a/src/main/java/org/violetmoon/quark/content/tools/entity/SkullPike.java b/src/main/java/org/violetmoon/quark/content/tools/entity/SkullPike.java index d91f2c4981..ac88f3e5cd 100644 --- a/src/main/java/org/violetmoon/quark/content/tools/entity/SkullPike.java +++ b/src/main/java/org/violetmoon/quark/content/tools/entity/SkullPike.java @@ -3,8 +3,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.level.ServerLevel; import net.minecraft.tags.BlockTags; import net.minecraft.world.entity.Entity; @@ -14,10 +13,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.network.NetworkHooks; - -import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.content.tools.module.SkullPikesModule; public class SkullPike extends Entity { @@ -58,24 +53,11 @@ public boolean isVisible(Entity entityIn) { } @Override - protected void defineSynchedData() { - // NO-OP - } + protected void defineSynchedData(SynchedEntityData.Builder builder) {} @Override - protected void readAdditionalSaveData(@NotNull CompoundTag nbt) { - // NO-OP - } + protected void readAdditionalSaveData(CompoundTag tag) {} @Override - protected void addAdditionalSaveData(@NotNull CompoundTag nbt) { - // NO-OP - } - - @NotNull - @Override - public Packet getAddEntityPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - -} + protected void addAdditionalSaveData(CompoundTag tag) {} +} \ No newline at end of file diff --git a/src/main/java/org/violetmoon/quark/content/tools/entity/rang/AbstractPickarang.java b/src/main/java/org/violetmoon/quark/content/tools/entity/rang/AbstractPickarang.java index dfdc64592d..d18de9a94d 100755 --- a/src/main/java/org/violetmoon/quark/content/tools/entity/rang/AbstractPickarang.java +++ b/src/main/java/org/violetmoon/quark/content/tools/entity/rang/AbstractPickarang.java @@ -1,15 +1,16 @@ package org.violetmoon.quark.content.tools.entity.rang; +import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; import net.minecraft.core.particles.BlockParticleOption; import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; -import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; @@ -20,7 +21,10 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.effect.MobEffectUtil; import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.*; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ExperienceOrb; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.*; import net.minecraft.world.entity.ai.attributes.AttributeSupplier.Builder; import net.minecraft.world.entity.item.ItemEntity; @@ -29,6 +33,8 @@ import net.minecraft.world.entity.projectile.Projectile; import net.minecraft.world.entity.projectile.ProjectileUtil; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.ClipContext; @@ -43,10 +49,8 @@ import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.HitResult.Type; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.common.ForgeMod; -import net.minecraftforge.event.ForgeEventFactory; -import net.minecraftforge.network.NetworkHooks; +import net.neoforged.neoforge.common.NeoForgeMod; +import net.neoforged.neoforge.event.EventHooks; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.violetmoon.quark.base.Quark; @@ -64,7 +68,6 @@ public abstract class AbstractPickarang> extends private static final EntityDataAccessor RETURNING = SynchedEntityData.defineId(AbstractPickarang.class, EntityDataSerializers.BOOLEAN); private UUID ownerId; - protected int liveTime; private int slot; private int blockHitCount; @@ -136,9 +139,9 @@ public void setThrowData(int slot, ItemStack stack) { } @Override - protected void defineSynchedData() { - entityData.define(STACK, new ItemStack(PickarangModule.pickarang)); - entityData.define(RETURNING, false); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + builder.define(STACK, new ItemStack(PickarangModule.pickarang)); + builder.define(RETURNING, false); } protected void checkImpact() { @@ -247,12 +250,18 @@ protected void onHitEntity(EntityHitResult result) { return; } ItemStack pickarang = getStack(); - Multimap modifiers = pickarang.getAttributeModifiers(EquipmentSlot.MAINHAND); + + ItemAttributeModifiers modifiers = pickarang.getAttributeModifiers(); + Multimap, AttributeModifier> attributeModifiers = ArrayListMultimap.create(); + + for (ItemAttributeModifiers.Entry entry : modifiers.modifiers()) { + attributeModifiers.put(entry.attribute(), entry.modifier()); + } if (owner instanceof LivingEntity leOwner) { ItemStack prev = leOwner.getMainHandItem(); leOwner.setItemInHand(InteractionHand.MAIN_HAND, pickarang); - leOwner.getAttributes().addTransientAttributeModifiers(modifiers); + leOwner.getAttributes().addTransientAttributeModifiers(attributeModifiers); PickarangModule.setActivePickarangDamage(PickarangModule.getDamageSource(this, leOwner)); int ticksSinceLastSwing = leOwner.attackStrengthTicker; @@ -284,7 +293,6 @@ protected void onHitEntity(EntityHitResult result) { else leOwner.doHurtTarget(hit); - if (hit instanceof LivingEntity && ((LivingEntity) hit).getHealth() == prevHealth) clank(result); } @@ -293,24 +301,31 @@ protected void onHitEntity(EntityHitResult result) { setStack(leOwner.getMainHandItem()); leOwner.setItemInHand(InteractionHand.MAIN_HAND, prev); - leOwner.getAttributes().addTransientAttributeModifiers(modifiers); + leOwner.getAttributes().addTransientAttributeModifiers(attributeModifiers); PickarangModule.setActivePickarangDamage(null); } else { Builder mapBuilder = new Builder(); mapBuilder.add(Attributes.ATTACK_DAMAGE, 1); AttributeSupplier map = mapBuilder.build(); AttributeMap manager = new AttributeMap(map); - manager.addTransientAttributeModifiers(modifiers); + manager.addTransientAttributeModifiers(attributeModifiers); ItemStack stack = getStack(); - stack.hurt(1, level().random, null); + stack.hurtAndBreak(1, (LivingEntity) owner, null); setStack(stack); - hit.hurt(PickarangModule.getDamageSource (this, owner), - (float) manager.getValue(Attributes.ATTACK_DAMAGE)); + hit.hurt(PickarangModule.getDamageSource(this, owner), (float) manager.getValue(Attributes.ATTACK_DAMAGE)); } } + private void setTransientModifiers(ItemAttributeModifiers modifiers, LivingEntity living) { + for (ItemAttributeModifiers.Entry entry : modifiers.modifiers()) { + AttributeInstance instance = living.getAttribute(entry.attribute()); + if (instance != null) { + instance.addTransientModifier(entry.modifier()); + } + } + } //equivalent of BlockState::getDestroyProgress private float getBlockDestroyProgress(BlockState state, Player player, BlockGetter level, BlockPos pos) { @@ -318,7 +333,7 @@ private float getBlockDestroyProgress(BlockState state, Player player, BlockGett if(f == -1.0F) { return 0.0F; } else { - float i = ForgeHooks.isCorrectToolForDrops(state, player) ? 30 : 100; + float i = EventHooks.doPlayerHarvestCheck(player, state, level, pos) ? 30 : 100; float digSpeed = getPlayerDigSpeed(player, state, pos); return (digSpeed / (f * i)); } @@ -342,10 +357,10 @@ private float getPlayerDigSpeed(Player player, BlockState state, @Nullable Block f *= f1; } - if(this.isEyeInFluidType(ForgeMod.WATER_TYPE.get())) { + if(this.isEyeInFluidType(NeoForgeMod.WATER_TYPE.value())) { f /= 5.0F; } - f = ForgeEventFactory.getBreakSpeed(player, state, f, pos); + f = EventHooks.getBreakSpeed(player, state, f, pos); return f; } @@ -506,7 +521,7 @@ public void tick() { if(!level.isClientSide) { playSound(QuarkSounds.ENTITY_PICKARANG_PICKUP, 1, 1); - if(player instanceof ServerPlayer sp && (this instanceof Flamerang) && isOnFire() && getPassengers().size() > 0) + if(player instanceof ServerPlayer sp && (this instanceof Flamerang) && isOnFire() && !getPassengers().isEmpty()) PickarangModule.useFlamerangTrigger.trigger(sp); if(!stack.isEmpty()) @@ -574,11 +589,6 @@ protected boolean canAddPassenger(@NotNull Entity passenger) { return super.canAddPassenger(passenger) || passenger instanceof ItemEntity || passenger instanceof ExperienceOrb; } - @Override - public double getPassengersRidingOffset() { - return 0; - } - @NotNull @Override public SoundSource getSoundSource() { @@ -586,11 +596,13 @@ public SoundSource getSoundSource() { } public int getEfficiencyModifier() { - return Quark.ZETA.itemExtensions.get(getStack()).getEnchantmentLevelZeta(getStack(), Enchantments.BLOCK_EFFICIENCY); + Holder holder = level().registryAccess().lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(Enchantments.EFFICIENCY); + return Quark.ZETA.itemExtensions.get(getStack()).getEnchantmentLevelZeta(getStack(), holder); } public int getPiercingModifier() { - return Quark.ZETA.itemExtensions.get(getStack()).getEnchantmentLevelZeta(getStack(), Enchantments.PIERCING); + Holder holder = level().registryAccess().lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(Enchantments.PIERCING); + return Quark.ZETA.itemExtensions.get(getStack()).getEnchantmentLevelZeta(getStack(), holder); } public ItemStack getStack() { @@ -609,7 +621,7 @@ public void readAdditionalSaveData(@NotNull CompoundTag compound) { slot = compound.getInt(TAG_RETURN_SLOT); if(compound.contains(TAG_ITEM_STACK)) - setStack(ItemStack.of(compound.getCompound(TAG_ITEM_STACK))); + setStack(ItemStack.parseOptional(level().registryAccess(), compound.getCompound(TAG_ITEM_STACK))); else setStack(new ItemStack(PickarangModule.pickarang)); @@ -626,16 +638,8 @@ public void addAdditionalSaveData(@NotNull CompoundTag compound) { compound.putInt(TAG_LIVE_TIME, liveTime); compound.putInt(TAG_BLOCKS_BROKEN, blockHitCount); compound.putInt(TAG_RETURN_SLOT, slot); - - compound.put(TAG_ITEM_STACK, getStack().serializeNBT()); + compound.put(TAG_ITEM_STACK, getStack().save(level().registryAccess())); if(this.ownerId != null) compound.put("owner", NbtUtils.createUUID(this.ownerId)); } - - @NotNull - @Override - public Packet getAddEntityPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - } diff --git a/src/main/java/org/violetmoon/quark/content/tools/item/ParrotEggItem.java b/src/main/java/org/violetmoon/quark/content/tools/item/ParrotEggItem.java index a646e6f623..738bd2f14a 100644 --- a/src/main/java/org/violetmoon/quark/content/tools/item/ParrotEggItem.java +++ b/src/main/java/org/violetmoon/quark/content/tools/item/ParrotEggItem.java @@ -11,9 +11,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.content.tools.entity.ParrotEgg; import org.violetmoon.quark.content.tools.module.ParrotEggsModule; import org.violetmoon.zeta.item.ZetaItem; diff --git a/src/main/java/org/violetmoon/quark/content/tools/item/PickarangItem.java b/src/main/java/org/violetmoon/quark/content/tools/item/PickarangItem.java index baccc2bef5..389c0ed5a2 100755 --- a/src/main/java/org/violetmoon/quark/content/tools/item/PickarangItem.java +++ b/src/main/java/org/violetmoon/quark/content/tools/item/PickarangItem.java @@ -3,13 +3,13 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; - import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundSource; import net.minecraft.stats.Stats; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; @@ -20,15 +20,12 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.TridentItem; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.base.handler.QuarkSounds; import org.violetmoon.quark.content.tools.config.PickarangType; @@ -51,33 +48,33 @@ public PickarangItem(String regname, ZetaModule module, Properties properties, P @Override public boolean hurtEnemy(ItemStack stack, @NotNull LivingEntity target, @NotNull LivingEntity attacker) { - stack.hurtAndBreak(2, attacker, (player) -> player.broadcastBreakEvent(InteractionHand.MAIN_HAND)); + stack.hurtAndBreak(2, attacker, EquipmentSlot.MAINHAND); return true; } @Override - public boolean isCorrectToolForDrops(@NotNull BlockState blockIn) { + public boolean isCorrectToolForDrops(@NotNull ItemStack stack, @NotNull BlockState blockIn) { return switch(type.harvestLevel) { - case 0 -> Items.WOODEN_PICKAXE.isCorrectToolForDrops(blockIn) || - (type.canActAsAxe && Items.WOODEN_AXE.isCorrectToolForDrops(blockIn)) || - (type.canActAsShovel && Items.WOODEN_SHOVEL.isCorrectToolForDrops(blockIn)) || - (type.canActAsHoe && Items.WOODEN_HOE.isCorrectToolForDrops(blockIn)); - case 1 -> Items.STONE_PICKAXE.isCorrectToolForDrops(blockIn) || - (type.canActAsAxe && Items.STONE_AXE.isCorrectToolForDrops(blockIn)) || - (type.canActAsShovel && Items.STONE_SHOVEL.isCorrectToolForDrops(blockIn)) || - (type.canActAsHoe && Items.STONE_HOE.isCorrectToolForDrops(blockIn)); - case 2 -> Items.IRON_PICKAXE.isCorrectToolForDrops(blockIn) || - (type.canActAsAxe && Items.IRON_AXE.isCorrectToolForDrops(blockIn)) || - (type.canActAsShovel && Items.IRON_SHOVEL.isCorrectToolForDrops(blockIn)) || - (type.canActAsHoe && Items.IRON_HOE.isCorrectToolForDrops(blockIn)); - case 3 -> Items.DIAMOND_PICKAXE.isCorrectToolForDrops(blockIn) || - (type.canActAsAxe && Items.DIAMOND_AXE.isCorrectToolForDrops(blockIn)) || - (type.canActAsShovel && Items.DIAMOND_SHOVEL.isCorrectToolForDrops(blockIn)) || - (type.canActAsHoe && Items.DIAMOND_HOE.isCorrectToolForDrops(blockIn)); - default -> Items.NETHERITE_PICKAXE.isCorrectToolForDrops(blockIn) || - (type.canActAsAxe && Items.NETHERITE_AXE.isCorrectToolForDrops(blockIn)) || - (type.canActAsShovel && Items.NETHERITE_SHOVEL.isCorrectToolForDrops(blockIn)) || - (type.canActAsHoe && Items.NETHERITE_HOE.isCorrectToolForDrops(blockIn)); + case 0 -> Items.WOODEN_PICKAXE.isCorrectToolForDrops(stack, blockIn) || + (type.canActAsAxe && Items.WOODEN_AXE.isCorrectToolForDrops(stack, blockIn)) || + (type.canActAsShovel && Items.WOODEN_SHOVEL.isCorrectToolForDrops(stack, blockIn)) || + (type.canActAsHoe && Items.WOODEN_HOE.isCorrectToolForDrops(stack, blockIn)); + case 1 -> Items.STONE_PICKAXE.isCorrectToolForDrops(stack, blockIn) || + (type.canActAsAxe && Items.STONE_AXE.isCorrectToolForDrops(stack, blockIn)) || + (type.canActAsShovel && Items.STONE_SHOVEL.isCorrectToolForDrops(stack, blockIn)) || + (type.canActAsHoe && Items.STONE_HOE.isCorrectToolForDrops(stack, blockIn)); + case 2 -> Items.IRON_PICKAXE.isCorrectToolForDrops(stack, blockIn) || + (type.canActAsAxe && Items.IRON_AXE.isCorrectToolForDrops(stack, blockIn)) || + (type.canActAsShovel && Items.IRON_SHOVEL.isCorrectToolForDrops(stack, blockIn)) || + (type.canActAsHoe && Items.IRON_HOE.isCorrectToolForDrops(stack, blockIn)); + case 3 -> Items.DIAMOND_PICKAXE.isCorrectToolForDrops(stack, blockIn) || + (type.canActAsAxe && Items.DIAMOND_AXE.isCorrectToolForDrops(stack, blockIn)) || + (type.canActAsShovel && Items.DIAMOND_SHOVEL.isCorrectToolForDrops(stack, blockIn)) || + (type.canActAsHoe && Items.DIAMOND_HOE.isCorrectToolForDrops(stack, blockIn)); + default -> Items.NETHERITE_PICKAXE.isCorrectToolForDrops(stack, blockIn) || + (type.canActAsAxe && Items.NETHERITE_AXE.isCorrectToolForDrops(stack, blockIn)) || + (type.canActAsShovel && Items.NETHERITE_SHOVEL.isCorrectToolForDrops(stack, blockIn)) || + (type.canActAsHoe && Items.NETHERITE_HOE.isCorrectToolForDrops(stack, blockIn)); }; } @@ -89,7 +86,7 @@ public int getMaxDamageZeta(ItemStack stack) { @Override public boolean mineBlock(@NotNull ItemStack stack, @NotNull Level worldIn, BlockState state, @NotNull BlockPos pos, @NotNull LivingEntity entityLiving) { if(state.getDestroySpeed(worldIn, pos) != 0) - stack.hurtAndBreak(1, entityLiving, (player) -> player.broadcastBreakEvent(InteractionHand.MAIN_HAND)); + stack.hurtAndBreak(1, entityLiving, EquipmentSlot.MAINHAND); return true; } @@ -98,7 +95,8 @@ public boolean mineBlock(@NotNull ItemStack stack, @NotNull Level worldIn, Block public InteractionResultHolder use(Level worldIn, Player playerIn, @NotNull InteractionHand handIn) { ItemStack itemstack = playerIn.getItemInHand(handIn); playerIn.setItemInHand(handIn, ItemStack.EMPTY); - int eff = Quark.ZETA.itemExtensions.get(itemstack).getEnchantmentLevelZeta(itemstack, Enchantments.BLOCK_EFFICIENCY); + Holder enchantment = playerIn.level().registryAccess().holderOrThrow(Registries.ENCHANTMENT).value().getHolderOrThrow(Enchantments.EFFICIENCY); + int eff = Quark.ZETA.itemExtensions.get(itemstack).getEnchantmentLevelZeta(itemstack, enchantment); Vec3 pos = playerIn.position(); worldIn.playSound(null, pos.x, pos.y, pos.z, QuarkSounds.ENTITY_PICKARANG_THROW, SoundSource.NEUTRAL, 0.5F + eff * 0.14F, 0.4F / (worldIn.random.nextFloat() * 0.4F + 0.8F)); diff --git a/src/main/java/org/violetmoon/quark/content/tools/module/AbacusModule.java b/src/main/java/org/violetmoon/quark/content/tools/module/AbacusModule.java index 4de3b95b7d..f390680360 100644 --- a/src/main/java/org/violetmoon/quark/content/tools/module/AbacusModule.java +++ b/src/main/java/org/violetmoon/quark/content/tools/module/AbacusModule.java @@ -3,14 +3,12 @@ import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; - import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; @@ -21,7 +19,6 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; - import org.joml.Matrix4f; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.base.config.type.RGBAColorConfig; @@ -153,8 +150,8 @@ public void onHighlightBlock(ZHighlightBlock event) { f1 /= f3; f2 /= f3; - bufferIn.vertex(matrix4f, (float) (minX + xIn), (float) (minY + yIn), (float) (minZ + zIn)).color(r, g, b, a).normal(pose.normal(), f, f1, f2).endVertex(); - bufferIn.vertex(matrix4f, (float) (maxX + xIn), (float) (maxY + yIn), (float) (maxZ + zIn)).color(r, g, b, a).normal(pose.normal(), f, f1, f2).endVertex(); + bufferIn.addVertex(matrix4f, (float) (minX + xIn), (float) (minY + yIn), (float) (minZ + zIn)).setColor(r, g, b, a).setNormal(pose, f, f1, f2); + bufferIn.addVertex(matrix4f, (float) (maxX + xIn), (float) (maxY + yIn), (float) (maxZ + zIn)).setColor(r, g, b, a).setNormal(pose, f, f1, f2); }); } diff --git a/src/main/java/org/violetmoon/quark/content/tools/module/ParrotEggsModule.java b/src/main/java/org/violetmoon/quark/content/tools/module/ParrotEggsModule.java index 5f2dd4d7d4..d4ceaffe7f 100644 --- a/src/main/java/org/violetmoon/quark/content/tools/module/ParrotEggsModule.java +++ b/src/main/java/org/violetmoon/quark/content/tools/module/ParrotEggsModule.java @@ -1,17 +1,14 @@ package org.violetmoon.quark.content.tools.module; -import net.minecraft.Util; import net.minecraft.client.renderer.entity.EntityRenderers; import net.minecraft.client.renderer.entity.ThrownItemRenderer; -import net.minecraft.core.Position; -import net.minecraft.core.dispenser.AbstractProjectileDispenseBehavior; +import net.minecraft.core.dispenser.ProjectileDispenseBehavior; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; @@ -20,17 +17,12 @@ import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.animal.Parrot; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.projectile.Projectile; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.level.Level; import net.minecraft.world.level.block.DispenserBlock; - -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.base.handler.QuarkSounds; import org.violetmoon.quark.content.tools.entity.ParrotEgg; @@ -84,7 +76,6 @@ public final void register(ZRegister event) { .sized(0.4F, 0.4F) .clientTrackingRange(64) .updateInterval(10) // update interval - .setCustomClientFactory((spawnEntity, world) -> new ParrotEgg(parrotEggType, world)) .build("parrot_egg"); Quark.ZETA.registry.register(parrotEggType, "parrot_egg", Registries.ENTITY_TYPE); @@ -93,17 +84,7 @@ public final void register(ZRegister event) { for(Parrot.Variant variant : Parrot.Variant.values()) { Item parrotEgg = new ParrotEggItem(variant, this).setCreativeTab(CreativeModeTabs.INGREDIENTS, Items.EGG, false); parrotEggs.add(parrotEgg); - - DispenserBlock.registerBehavior(parrotEgg, new AbstractProjectileDispenseBehavior() { - @NotNull - @Override - protected Projectile getProjectile(@NotNull Level world, @NotNull Position pos, @NotNull ItemStack stack) { - return Util.make(new ParrotEgg(world, pos.x(), pos.y(), pos.z()), (parrotEgg) -> { - parrotEgg.setItem(stack); - parrotEgg.setVariant(variant); - }); - } - }); + DispenserBlock.registerBehavior(parrotEgg, new ProjectileDispenseBehavior(parrotEgg)); // TODO: Fix variant logic } CreativeTabManager.endDaisyChain(); diff --git a/src/main/java/org/violetmoon/quark/content/tools/module/PickarangModule.java b/src/main/java/org/violetmoon/quark/content/tools/module/PickarangModule.java index 519cae3715..15b35fd4db 100755 --- a/src/main/java/org/violetmoon/quark/content/tools/module/PickarangModule.java +++ b/src/main/java/org/violetmoon/quark/content/tools/module/PickarangModule.java @@ -90,7 +90,6 @@ private > PickarangItem makePickarang(PickarangTy .sized(0.4F, 0.4F) .clientTrackingRange(4) .updateInterval(10) - .setCustomClientFactory((t, l) -> entityFactory.create(type.getEntityType(), l)) .build(name); Quark.ZETA.registry.register(entityType, name, Registries.ENTITY_TYPE); diff --git a/src/main/java/org/violetmoon/quark/content/tools/module/SeedPouchModule.java b/src/main/java/org/violetmoon/quark/content/tools/module/SeedPouchModule.java index 529d5466dc..25bfa7e619 100644 --- a/src/main/java/org/violetmoon/quark/content/tools/module/SeedPouchModule.java +++ b/src/main/java/org/violetmoon/quark/content/tools/module/SeedPouchModule.java @@ -1,10 +1,7 @@ package org.violetmoon.quark.content.tools.module; -import java.util.List; - import net.minecraft.client.renderer.item.ClampedItemPropertyFunction; import net.minecraft.client.renderer.item.ItemProperties; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -13,7 +10,6 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; - import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.tools.client.tooltip.SeedPouchClientTooltipComponent; import org.violetmoon.quark.content.tools.item.SeedPouchItem; @@ -23,11 +19,13 @@ import org.violetmoon.zeta.event.bus.LoadEvent; import org.violetmoon.zeta.event.bus.PlayEvent; import org.violetmoon.zeta.event.load.ZRegister; -import org.violetmoon.zeta.event.play.entity.ZEntityItemPickup; +import org.violetmoon.zeta.event.play.entity.ZItemEntityPickup; import org.violetmoon.zeta.module.ZetaLoadModule; import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.util.Hint; +import java.util.List; + @ZetaLoadModule(category = "tools") public class SeedPouchModule extends ZetaModule { @@ -55,7 +53,7 @@ public final void register(ZRegister event) { } @PlayEvent - public void onItemPickup(ZEntityItemPickup event) { + public void onItemPickup(ZItemEntityPickup event) { Player player = event.getPlayer(); ItemStack toPickup = event.getItem().getItem(); diff --git a/src/main/java/org/violetmoon/quark/content/tools/module/SkullPikesModule.java b/src/main/java/org/violetmoon/quark/content/tools/module/SkullPikesModule.java index 233d89e61d..98647c740b 100644 --- a/src/main/java/org/violetmoon/quark/content/tools/module/SkullPikesModule.java +++ b/src/main/java/org/violetmoon/quark/content/tools/module/SkullPikesModule.java @@ -52,7 +52,6 @@ public final void register(ZRegister event) { .clientTrackingRange(3) .updateInterval(Integer.MAX_VALUE) // update interval .setShouldReceiveVelocityUpdates(false) - .setCustomClientFactory((spawnEntity, world) -> new SkullPike(skullPikeType, world)) .build("skull_pike"); Quark.ZETA.registry.register(skullPikeType, "skull_pike", Registries.ENTITY_TYPE); } diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/ai/NuzzleGoal.java b/src/main/java/org/violetmoon/quark/content/tweaks/ai/NuzzleGoal.java index 9c7600f258..9141c57308 100755 --- a/src/main/java/org/violetmoon/quark/content/tweaks/ai/NuzzleGoal.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/ai/NuzzleGoal.java @@ -17,7 +17,7 @@ import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; import net.minecraft.world.entity.ai.navigation.PathNavigation; -import net.minecraft.world.level.pathfinder.BlockPathTypes; +import net.minecraft.world.level.pathfinder.PathType; import java.util.EnumSet; @@ -74,15 +74,15 @@ public boolean canContinueToUse() { public void start() { this.timeUntilRebuildPath = 0; this.whineCooldown = 10; - this.oldWaterCost = this.creature.getPathfindingMalus(BlockPathTypes.WATER); - this.creature.setPathfindingMalus(BlockPathTypes.WATER, 0.0F); + this.oldWaterCost = this.creature.getPathfindingMalus(PathType.WATER); + this.creature.setPathfindingMalus(PathType.WATER, 0.0F); } @Override public void stop() { this.owner = null; this.petPathfinder.stop(); - this.creature.setPathfindingMalus(BlockPathTypes.WATER, this.oldWaterCost); + this.creature.setPathfindingMalus(PathType.WATER, this.oldWaterCost); } @Override diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/client/emote/EmoteHandler.java b/src/main/java/org/violetmoon/quark/content/tweaks/client/emote/EmoteHandler.java index a0c41ee70c..fed2dc95a7 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/client/emote/EmoteHandler.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/client/emote/EmoteHandler.java @@ -154,18 +154,13 @@ private static PlayerRenderer getRenderPlayer(AbstractClientPlayer player) { Minecraft mc = Minecraft.getInstance(); EntityRenderDispatcher manager = mc.getEntityRenderDispatcher(); - EntityRenderer render = manager.getSkinMap().get(player.getModelName()); - if(render instanceof PlayerRenderer playerRenderer) - return playerRenderer; - return null; + EntityRenderer render = manager.getSkinMap().get(player.getSkin().model()); + return (render instanceof PlayerRenderer playerRenderer) ? playerRenderer : null; } private static HumanoidModel getPlayerModel(AbstractClientPlayer player) { PlayerRenderer render = getRenderPlayer(player); - if(render != null) - return render.getModel(); - - return null; + return (render != null) ? render.getModel() : null; } private static HumanoidModel getPlayerArmorModel(AbstractClientPlayer player) { @@ -178,11 +173,9 @@ private static HumanoidModel getPlayerArmorLegModel(AbstractClientPlayer play private static HumanoidModel getPlayerArmorModelForSlot(AbstractClientPlayer player, EquipmentSlot slot) { PlayerRenderer render = getRenderPlayer(player); - if(render == null) - return null; + if(render == null) return null; - List>> list = render.layers; + List>> list = render.layers; for(RenderLayer r : list) { if(r instanceof HumanoidArmorLayer) return ((HumanoidArmorLayer) r).getArmorModel(slot); diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/client/item/ClockTimePropertyFunction.java b/src/main/java/org/violetmoon/quark/content/tweaks/client/item/ClockTimePropertyFunction.java index 660f1f1153..61a072f2ef 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/client/item/ClockTimePropertyFunction.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/client/item/ClockTimePropertyFunction.java @@ -7,12 +7,10 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - import org.violetmoon.quark.content.tweaks.module.CompassesWorkEverywhereModule; @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/client/item/CompassAnglePropertyFunction.java b/src/main/java/org/violetmoon/quark/content/tweaks/client/item/CompassAnglePropertyFunction.java index 74cd68dbfd..c447bab354 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/client/item/CompassAnglePropertyFunction.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/client/item/CompassAnglePropertyFunction.java @@ -16,12 +16,10 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - import org.violetmoon.quark.content.tweaks.module.CompassesWorkEverywhereModule; import org.violetmoon.zeta.util.ItemNBTHelper; diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/module/AutomaticRecipeUnlockModule.java b/src/main/java/org/violetmoon/quark/content/tweaks/module/AutomaticRecipeUnlockModule.java index cdaa07b286..8c0d251753 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/module/AutomaticRecipeUnlockModule.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/module/AutomaticRecipeUnlockModule.java @@ -25,6 +25,7 @@ import org.violetmoon.zeta.config.Config; import org.violetmoon.zeta.event.bus.LoadEvent; import org.violetmoon.zeta.event.bus.PlayEvent; +import org.violetmoon.zeta.event.bus.ZPhase; import org.violetmoon.zeta.event.load.ZConfigChanged; import org.violetmoon.zeta.event.play.entity.player.ZPlayer; import org.violetmoon.zeta.module.ZetaLoadModule; @@ -95,7 +96,7 @@ public static void removeRecipeAdvancements(Map entry = iterator.next(); - if(entry.getKey().getPath().startsWith("recipes/") && entry.getValue().getCriteria().containsKey("has_the_recipe")) { + if(entry.getKey().getPath().startsWith("recipes/") && entry.getValue().containsKey("has_the_recipe")) { iterator.remove(); i++; } @@ -122,7 +123,8 @@ public void onInitGui(ZScreen.Init.Post event) { } @PlayEvent - public void clientTick(ZClientTick.End event) { + public void clientTick(ZClientTick event) { + if (event.getPhase() != ZPhase.END) return; Minecraft mc = Minecraft.getInstance(); if(mc.player != null && mc.player.tickCount < 20) { diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/module/DyeableItemFramesModule.java b/src/main/java/org/violetmoon/quark/content/tweaks/module/DyeableItemFramesModule.java index f73a2b4bf8..aa4e1553c5 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/module/DyeableItemFramesModule.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/module/DyeableItemFramesModule.java @@ -20,7 +20,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.phys.BlockHitResult; - import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.tweaks.client.render.entity.DyedItemFrameRenderer; import org.violetmoon.quark.content.tweaks.entity.DyedItemFrame; @@ -52,7 +51,6 @@ public final void register(ZRegister event) { .clientTrackingRange(10) .updateInterval(Integer.MAX_VALUE) // update interval .setShouldReceiveVelocityUpdates(false) - .setCustomClientFactory((spawnEntity, world) -> new DyedItemFrame(entityType, world)) .build("dyed_item_frame"); event.getRegistry().register(entityType, "dyed_item_frame", Registries.ENTITY_TYPE); @@ -74,7 +72,7 @@ public void onUse(ZRightClickBlock event) { BlockPos pos = event.getPos(); BlockState state = level.getBlockState(pos); - InteractionResult result = player.isCrouching() ? InteractionResult.PASS : state.use(level, player, hand, blockhit); + InteractionResult result = player.isCrouching() ? InteractionResult.PASS : state.useItemOn(stack, level, player, hand, blockhit).result(); if(result == InteractionResult.PASS) result = useOn(context); diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/module/HoeHarvestingModule.java b/src/main/java/org/violetmoon/quark/content/tweaks/module/HoeHarvestingModule.java index f8221475bb..ac21291f61 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/module/HoeHarvestingModule.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/module/HoeHarvestingModule.java @@ -1,25 +1,12 @@ package org.violetmoon.quark.content.tweaks.module; -import net.minecraft.core.registries.Registries; -import net.neoforged.neoforge.common.ItemAbilities; -import net.neoforged.neoforge.common.SpecialPlantable; -import org.violetmoon.quark.base.Quark; -import org.violetmoon.zeta.config.Config; -import org.violetmoon.zeta.event.bus.LoadEvent; -import org.violetmoon.zeta.event.bus.PlayEvent; -import org.violetmoon.zeta.event.load.ZCommonSetup; -import org.violetmoon.zeta.event.play.ZBlock; -import org.violetmoon.zeta.module.ZetaLoadModule; -import org.violetmoon.zeta.module.ZetaModule; -import org.violetmoon.zeta.util.Hint; -import org.violetmoon.zeta.util.MiscUtil; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.registries.Registries; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.HoeItem; import net.minecraft.world.item.Item; @@ -36,9 +23,17 @@ import net.minecraft.world.level.material.PushReaction; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.IPlantable; -import net.minecraftforge.common.PlantType; -import net.minecraftforge.common.ToolActions; +import net.neoforged.neoforge.common.ItemAbilities; +import net.neoforged.neoforge.common.SpecialPlantable; +import org.violetmoon.quark.base.Quark; +import org.violetmoon.zeta.config.Config; +import org.violetmoon.zeta.event.bus.LoadEvent; +import org.violetmoon.zeta.event.bus.PlayEvent; +import org.violetmoon.zeta.event.load.ZCommonSetup; +import org.violetmoon.zeta.event.play.ZBlock; +import org.violetmoon.zeta.module.ZetaLoadModule; +import org.violetmoon.zeta.module.ZetaModule; +import org.violetmoon.zeta.util.Hint; @ZetaLoadModule(category = "tweaks") public class HoeHarvestingModule extends ZetaModule { @@ -118,7 +113,7 @@ public void onBlockBroken(ZBlock.Break event) { } if(brokeNonInstant) - MiscUtil.damageStack(player, InteractionHand.MAIN_HAND, stack, 1); + stack.hurtAndBreak(1, player, EquipmentSlot.MAINHAND); } } diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/module/MapWashingModule.java b/src/main/java/org/violetmoon/quark/content/tweaks/module/MapWashingModule.java index 341718a71d..2cc6e61734 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/module/MapWashingModule.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/module/MapWashingModule.java @@ -2,6 +2,7 @@ import net.minecraft.core.cauldron.CauldronInteraction; import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.LayeredCauldronBlock; @@ -14,23 +15,21 @@ @ZetaLoadModule(category = "tweaks", antiOverlap = "supplementaries") public class MapWashingModule extends ZetaModule { private final CauldronInteraction WASHING_MAP = (state, level, pos, player, hand, stack) -> { - if(!enabled) - return InteractionResult.PASS; + if (!enabled) return ItemInteractionResult.FAIL; if(!stack.is(Items.FILLED_MAP)) { - return InteractionResult.PASS; + return ItemInteractionResult.FAIL; } else { if(!level.isClientSide) { player.setItemInHand(hand, new ItemStack(Items.MAP, stack.getCount())); LayeredCauldronBlock.lowerFillLevel(state, level, pos); } - - return InteractionResult.sidedSuccess(level.isClientSide); + return ItemInteractionResult.sidedSuccess(level.isClientSide); } }; @LoadEvent public final void setup(ZCommonSetup event) { - CauldronInteraction.WATER.put(Items.FILLED_MAP, WASHING_MAP); + CauldronInteraction.WATER.map().put(Items.FILLED_MAP, WASHING_MAP); } } diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/module/PoisonPotatoUsageModule.java b/src/main/java/org/violetmoon/quark/content/tweaks/module/PoisonPotatoUsageModule.java index e128eacf61..c241db77d4 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/module/PoisonPotatoUsageModule.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/module/PoisonPotatoUsageModule.java @@ -1,5 +1,6 @@ package org.violetmoon.quark.content.tweaks.module; +import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; @@ -54,7 +55,7 @@ public void onInteract(ZEntityInteract event) { Vec3 pos = entity.position(); if(event.getEntity().isCreative() || entity.level().random.nextDouble() < chance) { entity.playSound(SoundEvents.GENERIC_EAT, 0.5f, 0.25f); - entity.level().addParticle(ParticleTypes.ENTITY_EFFECT, pos.x, pos.y, pos.z, 0.2, 0.8, 0); + entity.level().addParticle((ParticleOptions) ParticleTypes.ENTITY_EFFECT, pos.x, pos.y, pos.z, 0.2, 0.8, 0); poisonEntity(entity); if(event.getEntity() instanceof ServerPlayer sp) diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/recipe/ElytraDuplicationRecipe.java b/src/main/java/org/violetmoon/quark/content/tweaks/recipe/ElytraDuplicationRecipe.java index 683ad8279b..93393577b2 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/recipe/ElytraDuplicationRecipe.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/recipe/ElytraDuplicationRecipe.java @@ -1,5 +1,6 @@ package org.violetmoon.quark.content.tweaks.recipe; +import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.core.RegistryAccess; import net.minecraft.resources.ResourceLocation; @@ -7,11 +8,7 @@ import net.minecraft.world.item.ElytraItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.item.crafting.SimpleCraftingRecipeSerializer; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; @@ -22,43 +19,34 @@ public class ElytraDuplicationRecipe extends CustomRecipe { public static final SimpleCraftingRecipeSerializer SERIALIZER = new SimpleCraftingRecipeSerializer<>(ElytraDuplicationRecipe::new); - public ElytraDuplicationRecipe(ResourceLocation id, CraftingBookCategory cat) { - super(id, cat); + public ElytraDuplicationRecipe(CraftingBookCategory category) { + super(category); } @Override - public boolean matches(@NotNull CraftingContainer var1, @NotNull Level var2) { - int sources = 0; - boolean foundTarget = false; - - for(int i = 0; i < var1.getContainerSize(); i++) { - ItemStack stack = var1.getItem(i); - if(!stack.isEmpty()) { - if(stack.getItem() instanceof ElytraItem) { - if(foundTarget) - return false; - foundTarget = true; - } else if(stack.getItem() == DragonScalesModule.dragon_scale) { - if(sources >= 1) - return false; - sources++; - } else - return false; + public boolean matches(CraftingInput input, Level level) { + if (input.ingredientCount() != 2) return false; + boolean hasElytra = false, hasScale = false; + + for (int i = 0; i < input.size(); ++i) { + ItemStack stack = input.getItem(i); + if (stack.getItem() instanceof ElytraItem) { + hasElytra = true; + } else if (stack.getItem() == DragonScalesModule.dragon_scale) { + hasScale = true; } } - - return sources == 1 && foundTarget; + return hasElytra && hasScale; } - @NotNull @Override - public ItemStack assemble(@NotNull CraftingContainer var1, RegistryAccess gaming) { - return getResultItem(gaming); + public ItemStack assemble(CraftingInput input, HolderLookup.Provider provider) { + return getResultItem(provider); } @NotNull @Override - public ItemStack getResultItem(RegistryAccess gaming) { + public ItemStack getResultItem(HolderLookup.Provider provider) { ItemStack stack = new ItemStack(Items.ELYTRA); // if(EnderdragonScales.dyeBlack && ModuleLoader.isFeatureEnabled(DyableElytra.class)) @@ -69,15 +57,14 @@ public ItemStack getResultItem(RegistryAccess gaming) { @NotNull @Override - public NonNullList getRemainingItems(CraftingContainer inv) { - NonNullList ret = NonNullList.withSize(inv.getContainerSize(), ItemStack.EMPTY); + public NonNullList getRemainingItems(CraftingInput inv) { + NonNullList ret = NonNullList.withSize(inv.ingredientCount(), ItemStack.EMPTY); - for(int i = 0; i < inv.getContainerSize(); i++) { + for(int i = 0; i < inv.size(); i++) { ItemStack stack = inv.getItem(i); if(stack.getItem() == Items.ELYTRA) ret.set(i, stack.copy()); } - return ret; } diff --git a/src/main/java/org/violetmoon/quark/content/world/block/ChorusVegetationBlock.java b/src/main/java/org/violetmoon/quark/content/world/block/ChorusVegetationBlock.java index 3197ad76b8..822ef16724 100644 --- a/src/main/java/org/violetmoon/quark/content/world/block/ChorusVegetationBlock.java +++ b/src/main/java/org/violetmoon/quark/content/world/block/ChorusVegetationBlock.java @@ -30,17 +30,15 @@ import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.common.IForgeShearable; - +import net.neoforged.neoforge.common.IShearable; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - import org.violetmoon.quark.content.world.module.ChorusVegetationModule; import org.violetmoon.zeta.block.ZetaBlock; import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.registry.RenderLayerRegistry; -public class ChorusVegetationBlock extends ZetaBlock implements BonemealableBlock, IForgeShearable { +public class ChorusVegetationBlock extends ZetaBlock implements BonemealableBlock, IShearable { protected static final VoxelShape SHAPE = Block.box(2, 0, 2, 14, 13, 14); @@ -129,7 +127,6 @@ private BlockPos teleport(BlockPos pos, RandomSource random, ServerLevel worldIn BlockState stateAt = worldIn.getBlockState(newPos); if(stateAt.getBlock() == Blocks.END_STONE) break; - else newPos = newPos.below(); } @@ -145,15 +142,13 @@ private BlockPos teleport(BlockPos pos, RandomSource random, ServerLevel worldIn } worldIn.sendParticles(ParticleTypes.REVERSE_PORTAL, newPos.getX() + 0.5, newPos.getY() - 0.25, newPos.getZ(), 50, 0.25, 0.25, 0.25, 0.05); - return newPos; } - return null; } @Override - public boolean isValidBonemealTarget(@NotNull LevelReader levelReader, @NotNull BlockPos blockPos, @NotNull BlockState blockState, boolean isClient) { + public boolean isValidBonemealTarget(@NotNull LevelReader levelReader, @NotNull BlockPos blockPos, @NotNull BlockState blockState) { return true; } @@ -187,8 +182,7 @@ public boolean canSurvive(@NotNull BlockState state, LevelReader worldIn, BlockP } @Override - public boolean isPathfindable(@NotNull BlockState state, @NotNull BlockGetter worldIn, @NotNull BlockPos pos, @NotNull PathComputationType type) { - return (type == PathComputationType.AIR && !this.hasCollision) || super.isPathfindable(state, worldIn, pos, type); + protected boolean isPathfindable(@NotNull BlockState state, @NotNull PathComputationType type) { + return (type == PathComputationType.AIR && !this.hasCollision) || super.isPathfindable(state, type); } - } diff --git a/src/main/java/org/violetmoon/quark/integration/jei/BackpackRecipeTransferHandler.java b/src/main/java/org/violetmoon/quark/integration/jei/BackpackRecipeTransferHandler.java index 142fbb5f19..ff657a29ad 100644 --- a/src/main/java/org/violetmoon/quark/integration/jei/BackpackRecipeTransferHandler.java +++ b/src/main/java/org/violetmoon/quark/integration/jei/BackpackRecipeTransferHandler.java @@ -17,6 +17,7 @@ import net.minecraft.world.inventory.MenuType; import net.minecraft.world.item.crafting.CraftingRecipe; +import net.minecraft.world.item.crafting.RecipeHolder; import org.jetbrains.annotations.Nullable; import org.violetmoon.quark.addons.oddities.inventory.BackpackMenu; @@ -36,7 +37,7 @@ public class BackpackRecipeTransferHandler implements IRecipeTransferHandler handler; + private final IRecipeTransferHandler> handler; public BackpackRecipeTransferHandler(IRecipeTransferHandlerHelper handlerHelper) { this.handlerHelper = handlerHelper; diff --git a/src/main/java/org/violetmoon/quark/integration/jei/ElytraDuplicationExtension.java b/src/main/java/org/violetmoon/quark/integration/jei/ElytraDuplicationExtension.java index c6d8e34d86..982e3ccede 100644 --- a/src/main/java/org/violetmoon/quark/integration/jei/ElytraDuplicationExtension.java +++ b/src/main/java/org/violetmoon/quark/integration/jei/ElytraDuplicationExtension.java @@ -1,32 +1,28 @@ package org.violetmoon.quark.integration.jei; import com.google.common.collect.Lists; - import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.ingredient.ICraftingGridHelper; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.category.extensions.vanilla.crafting.ICraftingCategoryExtension; - import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.resources.language.I18n; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.Ingredient; - -import org.jetbrains.annotations.NotNull; - +import net.minecraft.world.item.crafting.RecipeHolder; import org.violetmoon.quark.base.QuarkClient; import org.violetmoon.quark.content.tweaks.recipe.ElytraDuplicationRecipe; import java.util.ArrayList; import java.util.List; -public record ElytraDuplicationExtension(ElytraDuplicationRecipe recipe) implements ICraftingCategoryExtension { +public record ElytraDuplicationExtension(ElytraDuplicationRecipe recipe) implements ICraftingCategoryExtension { @Override - public void setRecipe(@NotNull IRecipeLayoutBuilder builder, @NotNull ICraftingGridHelper craftingGridHelper, @NotNull IFocusGroup focuses) { + public void setRecipe(RecipeHolder recipeHolder, IRecipeLayoutBuilder builder, ICraftingGridHelper craftingGridHelper, IFocusGroup focuses) { List> inputLists = new ArrayList<>(); for(Ingredient input : recipe.getIngredients()) { ItemStack[] stacks = input.getItems(); @@ -35,16 +31,10 @@ public void setRecipe(@NotNull IRecipeLayoutBuilder builder, @NotNull ICraftingG } craftingGridHelper.createAndSetInputs(builder, VanillaTypes.ITEM_STACK, inputLists, 0, 0); craftingGridHelper.createAndSetOutputs(builder, VanillaTypes.ITEM_STACK, Lists.newArrayList(recipe.getResultItem(QuarkClient.ZETA_CLIENT.hackilyGetCurrentClientLevelRegistryAccess()))); - } @Override - public void drawInfo(int recipeWidth, int recipeHeight, @NotNull GuiGraphics guiGraphics, double mouseX, double mouseY) { + public void drawInfo(RecipeHolder recipe, int recipeWidth, int recipeHeight, GuiGraphics guiGraphics, double mouseX, double mouseY) { guiGraphics.drawString(Minecraft.getInstance().font, I18n.get("quark.jei.makes_copy"), 60, 46, 0x555555); } - - @Override - public ResourceLocation getRegistryName() { - return recipe.getId(); - } } diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 6bac577e02..41465e5552 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -1,5 +1,5 @@ -public net.minecraft.client.gui.components.toasts.RecipeToast f_94805_ # recipes -public net.minecraft.client.gui.components.toasts.ToastComponent f_94916_ # toastsQueue +public net.minecraft.client.gui.components.toasts.RecipeToast recipes # recipes +public net.minecraft.client.gui.components.toasts.ToastComponent queued # queued public net.minecraft.client.gui.screens.recipebook.GhostRecipe$GhostIngredient f_100161_ # ingredient public net.minecraft.client.gui.screens.recipebook.RecipeBookComponent f_100269_ # ghostRecipe public net.minecraft.client.gui.screens.recipebook.RecipeBookComponent f_100281_ # searchBar @@ -9,8 +9,9 @@ public net.minecraft.client.gui.screens.recipebook.RecipeBookPage f_100399_ # re public net.minecraft.client.multiplayer.PlayerInfo f_105299_ # playerTextures public net.minecraft.client.player.AbstractClientPlayer playerInfo # playerInfo public net.minecraft.client.renderer.LevelRenderer f_109410_ # mapSoundPositions -public net.minecraft.client.renderer.entity.LivingEntityRenderer f_115291_ # layerRenderers -public net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer m_117078_(Lnet/minecraft/world/entity/EquipmentSlot;)Lnet/minecraft/client/model/HumanoidModel; #func_241736_a_ +public net.minecraft.client.renderer.entity.LivingEntityRenderer layers # layers +public net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer getArmorModel (Lnet/minecraft/world/entity/EquipmentSlot;)Lnet/minecraft/client/model/HumanoidModel; # getArmorModel +public net.minecraft.world.entity.LivingEntity attackStrengthTicker # attackStrengthTicker public net.minecraft.util.random.Weight (I)V # public net.minecraft.world.entity.LivingEntity f_20899_ # isJumping public net.minecraft.world.entity.LivingEntity f_20922_ # ticksSinceLastSwing @@ -18,7 +19,7 @@ public net.minecraft.world.entity.ai.goal.TemptGoal items # items public net.minecraft.world.entity.ai.gossip.GossipContainer f_26156_ # uuid_gossips_mapping public net.minecraft.world.entity.ai.gossip.GossipContainer$EntityGossips public net.minecraft.world.entity.animal.horse.AbstractHorse m_30625_()V # initHorseChest -public net.minecraft.world.entity.item.FallingBlockEntity f_31946_ # blockState +public net.minecraft.world.entity.item.FallingBlockEntity blockState # blockState public net.minecraft.world.entity.monster.ZombieVillager f_34361_ # gossips public-f net.minecraft.world.entity.player.Player f_36095_ #container public net.minecraft.world.entity.projectile.ThrownTrident m_7941_()Lnet/minecraft/world/item/ItemStack; # getArrowStack @@ -54,16 +55,17 @@ public net.minecraft.world.entity.projectile.ThrownTrident f_37555_ # tridentIte public net.minecraft.world.item.CompassItem m_40727_(Lnet/minecraft/nbt/CompoundTag;)Ljava/util/Optional; # getLodestoneDimension public net.minecraft.data.worldgen.biome.OverworldBiomes m_236663_(Lnet/minecraft/world/level/biome/Biome$Precipitation;FFLnet/minecraft/world/level/biome/MobSpawnSettings$Builder;Lnet/minecraft/world/level/biome/BiomeGenerationSettings$Builder;Lnet/minecraft/sounds/Music;)Lnet/minecraft/world/level/biome/Biome; # biome public net.minecraft.data.worldgen.biome.OverworldBiomes m_236654_(Lnet/minecraft/world/level/biome/Biome$Precipitation;FFIILnet/minecraft/world/level/biome/MobSpawnSettings$Builder;Lnet/minecraft/world/level/biome/BiomeGenerationSettings$Builder;Lnet/minecraft/sounds/Music;)Lnet/minecraft/world/level/biome/Biome; # biome -public net.minecraft.world.entity.animal.frog.Tadpole m_218710_(I)V # setAge +public net.minecraft.world.entity.animal.frog.Tadpole setAge(I)V # setAge public net.minecraft.world.level.block.entity.BeaconBlockEntity$BeaconBeamSection f_58716_ # height public net.minecraft.world.entity.animal.TropicalFish m_30064_(I)I # getPatternVariant public net.minecraft.world.item.context.BlockPlaceContext f_43628_ # replaceClicked public net.minecraft.client.gui.Gui f_279580_ # GUI_ICONS_LOCATION -public net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase f_283893_ # mapColor +public net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase mapColor # mapColor public net.minecraft.core.RegistrySetBuilder$BuildState public net.minecraft.client.resources.model.ModelManager$ReloadState public net.minecraft.world.entity.npc.VillagerTrades$ItemsForEmeralds public net.minecraft.world.entity.npc.VillagerTrades$ItemsAndEmeraldsToItems public net.minecraft.world.entity.npc.VillagerTrades$EmeraldForItems -public-f net.minecraft.world.entity.npc.VillagerType f_35827_ # BY_BIOME villager map -public net.minecraft.world.level.levelgen.structure.StructurePiece m_73441_(Lnet/minecraft/world/level/WorldGenLevel;Lnet/minecraft/world/level/levelgen/structure/BoundingBox;IIIIIILnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockState;Z)V # generateBox \ No newline at end of file +public-f net.minecraft.world.entity.npc.VillagerType BY_BIOME # BY_BIOME +public net.minecraft.world.level.levelgen.structure.StructurePiece m_73441_(Lnet/minecraft/world/level/WorldGenLevel;Lnet/minecraft/world/level/levelgen/structure/BoundingBox;IIIIIILnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockState;Z)V # generateBox +public-f net.minecraft.world.item.Item craftingRemainingItem # craftingRemainingItem \ No newline at end of file