diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/client/render/entity/TotemOfHoldingRenderer.java b/src/main/java/org/violetmoon/quark/addons/oddities/client/render/entity/TotemOfHoldingRenderer.java index f964bca4ea..ae242dc928 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/client/render/entity/TotemOfHoldingRenderer.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/client/render/entity/TotemOfHoldingRenderer.java @@ -2,7 +2,6 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; - import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.Sheets; @@ -17,16 +16,14 @@ import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.HitResult; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.addons.oddities.entity.TotemOfHoldingEntity; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.base.QuarkClient; public class TotemOfHoldingRenderer extends EntityRenderer { - private static final ModelResourceLocation LOCATION_MODEL = new ModelResourceLocation(Quark.MOD_ID, "extra/totem_of_holding", "inventory"); + private static final ModelResourceLocation LOCATION_MODEL = ModelResourceLocation.inventory(Quark.asResource("extra/totem_of_holding")); public TotemOfHoldingRenderer(EntityRendererProvider.Context context) { super(context); diff --git a/src/main/java/org/violetmoon/quark/api/event/UsageTickerEvent.java b/src/main/java/org/violetmoon/quark/api/event/UsageTickerEvent.java index 1dd3141d8e..c977aab1e9 100644 --- a/src/main/java/org/violetmoon/quark/api/event/UsageTickerEvent.java +++ b/src/main/java/org/violetmoon/quark/api/event/UsageTickerEvent.java @@ -4,8 +4,9 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.neoforged.bus.api.Event; +import net.neoforged.bus.api.ICancellableEvent; -public class UsageTickerEvent extends Event { +public class UsageTickerEvent extends Event implements ICancellableEvent { public final EquipmentSlot slot; public final ItemStack currentStack; diff --git a/src/main/java/org/violetmoon/quark/base/config/definition/RGBClientDefinition.java b/src/main/java/org/violetmoon/quark/base/config/definition/RGBClientDefinition.java index 9eb9a80b53..63d54f766d 100644 --- a/src/main/java/org/violetmoon/quark/base/config/definition/RGBClientDefinition.java +++ b/src/main/java/org/violetmoon/quark/base/config/definition/RGBClientDefinition.java @@ -8,7 +8,7 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; -import net.minecraftforge.client.gui.widget.ForgeSlider; +import net.neoforged.neoforge.client.gui.widget.ExtendedSlider; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.violetmoon.quark.base.config.type.RGBAColorConfig; @@ -60,10 +60,10 @@ public void addWidgets(ZetaClient zc, Screen parent, ChangeSet changes, SectionD } class RGBInputScreen extends AbstractSectionInputScreen { - protected ForgeSlider rslide; - protected ForgeSlider gslide; - protected ForgeSlider bslide; - protected @Nullable ForgeSlider aslide; + protected ExtendedSlider rslide; + protected ExtendedSlider gslide; + protected ExtendedSlider bslide; + protected @Nullable ExtendedSlider aslide; public RGBInputScreen(ZetaClient zc, Screen parent, ChangeSet changes, SectionDefinition def) { super(zc, parent, changes, def); @@ -99,9 +99,9 @@ protected void forceUpdateWidgets() { private static final Component EMPTY = Component.empty(); - private ForgeSlider makeSliderPlease(int x, int y, int width, int height, ValueDefinition binding, String label, int labelColor) { + private ExtendedSlider makeSliderPlease(int x, int y, int width, int height, ValueDefinition binding, String label, int labelColor) { //TODO: keep this for forge with a platform delegate or copy paste in common - return new ForgeSlider(x, y + 50, width, height, EMPTY, EMPTY, 0f, 1f, 0, 0, 1, false) { + return new ExtendedSlider(x, y + 50, width, height, EMPTY, EMPTY, 0f, 1f, 0, 0, 1, false) { @Override protected void applyValue() { setValue(snap(this)); @@ -109,8 +109,8 @@ protected void applyValue() { } @Override - public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { - super.render(guiGraphics, mouseX, mouseY, partialTicks); + public void renderWidget(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + super.renderWidget(guiGraphics, mouseX, mouseY, partialTicks); //draw the current value String displayVal = String.format("%.2f", getValue()); @@ -130,8 +130,7 @@ public void tick() { @Override public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { - renderBackground(guiGraphics); - + renderBackground(guiGraphics, mouseX, mouseY, partialTicks); super.render(guiGraphics, mouseX, mouseY, partialTicks); int titleLeft = width / 2; @@ -160,7 +159,7 @@ public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, flo guiGraphics.fill(cx, cy, cx + size, cy + size, color); } - private double snap(ForgeSlider s) { + private double snap(ExtendedSlider s) { double val = s.getValue(); val = snap(val, 0.0, s); val = snap(val, 0.25, s); @@ -170,7 +169,7 @@ private double snap(ForgeSlider s) { return val; } - private double snap(double val, double target, ForgeSlider s) { + private double snap(double val, double target, ExtendedSlider s) { if(Math.abs(val - target) < 0.02) { s.setValue(target); return target; diff --git a/src/main/java/org/violetmoon/quark/content/automation/client/render/QuarkPistonBlockEntityRenderer.java b/src/main/java/org/violetmoon/quark/content/automation/client/render/QuarkPistonBlockEntityRenderer.java index ea9a843c8e..431f995e3d 100644 --- a/src/main/java/org/violetmoon/quark/content/automation/client/render/QuarkPistonBlockEntityRenderer.java +++ b/src/main/java/org/violetmoon/quark/content/automation/client/render/QuarkPistonBlockEntityRenderer.java @@ -39,7 +39,7 @@ public static boolean renderPistonBlock(PistonMovingBlockEntity piston, float pa return false; CompoundTag tileTag = PistonsMoveTileEntitiesModule.getMovingBlockEntityData(piston.getLevel(), truePos); if(tileTag != null && tile.getType() == BuiltInRegistries.BLOCK_ENTITY_TYPE.get(ResourceLocation.parse(tileTag.getString("id")))) - tile.load(tileTag); + tile.loadWithComponents(tileTag, piston.getLevel().registryAccess()); Vec3 offset = new Vec3(piston.getXOff(partialTicks), piston.getYOff(partialTicks), piston.getZOff(partialTicks)); return renderTESafely(piston.getLevel(), truePos, state, tile, piston, partialTicks, offset, matrix, bufferIn, combinedLightIn, combinedOverlayIn); } @@ -62,7 +62,7 @@ public static boolean renderTESafely(Level world, BlockPos truePos, BlockState s matrix.translate(offset.x, offset.y, offset.z); - tile.blockState = state; + tile.setBlockState(state); tileentityrenderer.render(tile, partialTicks, matrix, bufferIn, combinedLightIn, combinedOverlayIn); } } catch (Exception e) { diff --git a/src/main/java/org/violetmoon/quark/content/automation/client/screen/CrafterScreen.java b/src/main/java/org/violetmoon/quark/content/automation/client/screen/CrafterScreen.java index 0e4942b03e..a7ec2e72ad 100644 --- a/src/main/java/org/violetmoon/quark/content/automation/client/screen/CrafterScreen.java +++ b/src/main/java/org/violetmoon/quark/content/automation/client/screen/CrafterScreen.java @@ -27,11 +27,6 @@ package org.violetmoon.quark.content.automation.client.screen; -import java.util.List; - -import org.violetmoon.quark.base.Quark; -import org.violetmoon.quark.content.automation.inventory.CrafterMenu; - import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.resources.sounds.SimpleSoundInstance; @@ -40,6 +35,10 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.Slot; +import org.violetmoon.quark.base.Quark; +import org.violetmoon.quark.content.automation.inventory.CrafterMenu; + +import java.util.List; public class CrafterScreen extends AbstractContainerScreen { private static final ResourceLocation TEXTURE = Quark.asResource("textures/gui/container/crafter.png"); @@ -56,7 +55,7 @@ public void init() { @Override public void render(GuiGraphics context, int mouseX, int mouseY, float delta) { - renderBackground(context); + renderBackground(context, mouseX, mouseY, delta); super.render(context, mouseX, mouseY, delta); this.renderTooltip(context, mouseX, mouseY); if (menu.getCarried().isEmpty() && this.hoveredSlot != null && this.hoveredSlot.getItem().isEmpty() && this.hoveredSlot.container == menu.crafter && !isBlocked(this.hoveredSlot)) { diff --git a/src/main/java/org/violetmoon/quark/content/building/entity/GlassItemFrame.java b/src/main/java/org/violetmoon/quark/content/building/entity/GlassItemFrame.java index f4c7a97262..8af33a09a8 100755 --- a/src/main/java/org/violetmoon/quark/content/building/entity/GlassItemFrame.java +++ b/src/main/java/org/violetmoon/quark/content/building/entity/GlassItemFrame.java @@ -1,14 +1,10 @@ package org.violetmoon.quark.content.building.entity; import com.mojang.authlib.GameProfile; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; -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; @@ -31,15 +27,13 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.FakePlayerFactory; -import net.minecraftforge.entity.IEntityAdditionalSpawnData; -import net.minecraftforge.network.NetworkHooks; - +import net.neoforged.neoforge.capabilities.BlockCapability; +import net.neoforged.neoforge.common.util.FakePlayerFactory; import net.neoforged.neoforge.entity.IEntityWithComplexSpawn; +import net.neoforged.neoforge.items.IItemHandler; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - +import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.building.module.GlassItemFrameModule; import java.util.UUID; @@ -48,6 +42,9 @@ public class GlassItemFrame extends ItemFrame implements IEntityWithComplexSpawn public static final EntityDataAccessor IS_SHINY = SynchedEntityData.defineId(GlassItemFrame.class, EntityDataSerializers.BOOLEAN); + public static final BlockCapability ITEM_HANDLER_BLOCK = + BlockCapability.createSided(Quark.asResource("glass_frame_capability"), IItemHandler.class); + private static final String TAG_SHINY = "isShiny"; private static final GameProfile DUMMY_PROFILE = new GameProfile(UUID.randomUUID(), "ItemFrame"); @@ -79,16 +76,14 @@ public GlassItemFrame(Level worldIn, BlockPos blockPos, Direction face) { @Override public InteractionResult interact(Player player, @NotNull InteractionHand hand) { ItemStack item = getItem(); - if(!player.isShiftKeyDown() && !item.isEmpty() && !(item.getItem() instanceof BannerItem)) { + if (!player.isShiftKeyDown() && !item.isEmpty() && !(item.getItem() instanceof BannerItem)) { BlockPos behind = getBehindPos(); BlockEntity tile = level().getBlockEntity(behind); - if(tile != null && tile.getCapability(ForgeCapabilities.ITEM_HANDLER).isPresent()) { + if(tile != null && level().getCapability(ITEM_HANDLER_BLOCK, tile.getBlockPos(), direction) != null) { BlockState behindState = level().getBlockState(behind); - InteractionResult result = behindState.use(level(), player, hand, new BlockHitResult(new Vec3(getX(), getY(), getZ()), direction, behind, true)); - - if(result.consumesAction()) - return result; + InteractionResult result = behindState.useWithoutItem(level(), player, new BlockHitResult(new Vec3(getX(), getY(), getZ()), direction, behind, true)); + if (result.consumesAction()) return result; } } @@ -241,12 +236,6 @@ public void readAdditionalSaveData(@NotNull CompoundTag cmp) { entityData.set(IS_SHINY, cmp.getBoolean(TAG_SHINY)); } - @NotNull - @Override - public Packet getAddEntityPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - @Override public void writeSpawnData(RegistryFriendlyByteBuf registryFriendlyByteBuf) { registryFriendlyByteBuf.writeBlockPos(this.pos); diff --git a/src/main/java/org/violetmoon/quark/content/building/module/MorePottedPlantsModule.java b/src/main/java/org/violetmoon/quark/content/building/module/MorePottedPlantsModule.java index cafdd1b165..41445f5836 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/MorePottedPlantsModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/MorePottedPlantsModule.java @@ -1,32 +1,28 @@ package org.violetmoon.quark.content.building.module; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - +import com.google.common.base.Functions; +import com.google.common.collect.Lists; +import net.minecraft.client.color.block.BlockColor; import net.minecraft.client.color.block.BlockColors; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.FlowerPotBlock; +import net.minecraft.world.level.block.state.BlockState; import org.violetmoon.zeta.client.event.load.ZAddBlockColorHandlers; -import org.violetmoon.zeta.client.event.load.ZClientSetup; import org.violetmoon.zeta.event.bus.LoadEvent; import org.violetmoon.zeta.event.load.ZRegister; import org.violetmoon.zeta.module.ZetaLoadModule; import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.util.Hint; -import com.google.common.base.Functions; -import com.google.common.collect.Lists; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.color.block.BlockColor; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.FlowerPotBlock; -import net.minecraft.world.level.block.state.BlockState; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @ZetaLoadModule(category = "building") public class MorePottedPlantsModule extends ZetaModule { - private static Map tintedBlocks = new HashMap<>(); + private static final Map tintedBlocks = new HashMap<>(); @Hint(key = "pottable_stuff") List pottableBlocks = Lists.newArrayList(); @@ -38,7 +34,7 @@ public final void register(ZRegister event) { add(event, Blocks.CARROTS, "carrot"); add(event, Blocks.CHORUS_FLOWER, "chorus"); add(event, Blocks.COCOA, "cocoa_bean"); - Block grass = add(event, Blocks.GRASS, "grass"); + Block grass = add(event, Blocks.SHORT_GRASS, "grass"); add(event, Blocks.PEONY, "peony"); Block largeFern = add(event, Blocks.LARGE_FERN, "large_fern"); add(event, Blocks.LILAC, "lilac"); @@ -59,7 +55,7 @@ public final void register(ZRegister event) { event.getVariantRegistry().addFlowerPot(Blocks.CAVE_VINES, "cave_vines", p -> p.lightLevel(b -> 14)); add(event, Blocks.PITCHER_PLANT, "pitcher_plant"); - tintedBlocks.put(grass, Blocks.GRASS); + tintedBlocks.put(grass, Blocks.SHORT_GRASS); tintedBlocks.put(largeFern, Blocks.LARGE_FERN); tintedBlocks.put(sugarCane, Blocks.SUGAR_CANE); tintedBlocks.put(tallGrass, Blocks.TALL_GRASS); diff --git a/src/main/java/org/violetmoon/quark/content/client/module/UsageTickerModule.java b/src/main/java/org/violetmoon/quark/content/client/module/UsageTickerModule.java index cb30488787..1e52a43926 100644 --- a/src/main/java/org/violetmoon/quark/content/client/module/UsageTickerModule.java +++ b/src/main/java/org/violetmoon/quark/content/client/module/UsageTickerModule.java @@ -1,9 +1,11 @@ package org.violetmoon.quark.content.client.module; import com.mojang.blaze3d.platform.Window; - import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.core.Holder; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.EquipmentSlot.Type; @@ -12,9 +14,9 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ProjectileWeaponItem; +import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantments; - -import net.minecraftforge.common.MinecraftForge; +import net.neoforged.neoforge.common.NeoForge; import org.violetmoon.quark.api.IUsageTickerOverride; import org.violetmoon.quark.api.event.UsageTickerEvent; import org.violetmoon.quark.base.Quark; @@ -23,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.module.ZetaLoadModule; import org.violetmoon.zeta.module.ZetaModule; @@ -71,7 +74,9 @@ public final void configChanged(ZConfigChanged 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.level != null) for(TickerElement ticker : elements) @@ -83,7 +88,7 @@ public void clientTick(ZClientTick.End event) { public void renderHUD(ZRenderGuiOverlay.Hotbar.Post event) { Window window = event.getWindow(); Player player = Minecraft.getInstance().player; - float partial = event.getPartialTick(); + float partial = event.getPartialTick().getGameTimeDeltaTicks(); GuiGraphics guiGraphics = event.getGuiGraphics(); @@ -150,7 +155,7 @@ public void render(GuiGraphics guiGraphics, Window window, Player player, boolea float y = window.getGuiScaledHeight() - anim; int barWidth = 190; - boolean armor = slot.getType() == Type.ARMOR; + boolean armor = slot.getType() == Type.HUMANOID_ARMOR; HumanoidArm primary = player.getMainArm(); HumanoidArm ourSide = (armor != invert) ? primary : primary.getOpposite(); @@ -193,7 +198,7 @@ public ItemStack getLogicalStack(ItemStack stack, int count, Player player, bool stack = over.getUsageTickerItem(stack); returnStack = stack; verifySize = over.shouldUsageTickerCheckMatchSize(currStack); - } else if(isProjectileWeapon(stack)) { + } else if(isProjectileWeapon(player.level().registryAccess(), stack)) { returnStack = player.getProjectile(stack); logicLock = true; } @@ -207,7 +212,7 @@ else if(verifySize && stack.isStackable() && count == stack.getCount()) //TODO ZETA: readd this UsageTickerEvent.GetStack event = new UsageTickerEvent.GetStack(slot, returnStack, stack, count, renderPass, player); - MinecraftForge.EVENT_BUS.post(event); + NeoForge.EVENT_BUS.post(event); return event.isCanceled() ? ItemStack.EMPTY : event.getResultStack(); } @@ -215,7 +220,7 @@ public int getStackCount(Player player, ItemStack displayStack, ItemStack origin int val = 1; if(displayStack.isStackable()) { - Predicate predicate = (stackAt) -> ItemStack.isSameItemSameTags(stackAt, displayStack); + Predicate predicate = (stackAt) -> ItemStack.isSameItemSameComponents(stackAt, displayStack); int total = 0; Inventory inventory = player.getInventory(); @@ -234,12 +239,13 @@ else if(stackAt.getItem() instanceof IUsageTickerOverride over) { //TODO ZETA: readd this UsageTickerEvent.GetCount event = new UsageTickerEvent.GetCount(slot, displayStack, original, val, renderPass, player); - MinecraftForge.EVENT_BUS.post(event); + NeoForge.EVENT_BUS.post(event); return event.isCanceled() ? 0 : event.getResultCount(); } - private static boolean isProjectileWeapon(ItemStack stack) { - return stack.getItem() instanceof ProjectileWeaponItem && Quark.ZETA.itemExtensions.get(stack).getEnchantmentLevelZeta(stack, Enchantments.INFINITY_ARROWS) == 0; + private static boolean isProjectileWeapon(RegistryAccess access, ItemStack stack) { + Holder enchantment = access.lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(Enchantments.INFINITY); + return stack.getItem() instanceof ProjectileWeaponItem && Quark.ZETA.itemExtensions.get(stack).getEnchantmentLevelZeta(stack, enchantment) == 0; } public ItemStack getRenderedStack(Player player) { diff --git a/src/main/java/org/violetmoon/quark/content/experimental/client/screen/VariantSelectorScreen.java b/src/main/java/org/violetmoon/quark/content/experimental/client/screen/VariantSelectorScreen.java index 38149bdf98..1e526eb8f7 100644 --- a/src/main/java/org/violetmoon/quark/content/experimental/client/screen/VariantSelectorScreen.java +++ b/src/main/java/org/violetmoon/quark/content/experimental/client/screen/VariantSelectorScreen.java @@ -133,7 +133,7 @@ public void render(@NotNull GuiGraphics guiGraphics, int mx, int my, float delta } if (seg == 0) - buf.vertex(x, y, 0).color(r, g, b, a).endVertex(); + buf.addVertex(x, y, 0).setColor(r, g, b, a); if (mouseInSector) { slotSelected = seg; @@ -149,8 +149,8 @@ public void render(@NotNull GuiGraphics guiGraphics, int mx, int my, float delta float exp = x + Mth.cos(end) * radius; float eyp = y + Mth.sin(end) * radius; - buf.vertex(sxp, syp, 0).color(r, g, b, a).endVertex(); - buf.vertex(exp, eyp, 0).color(r, g, b, a).endVertex(); + buf.addVertex(sxp, syp, 0).setColor(r, g, b, a); + buf.addVertex(exp, eyp, 0).setColor(r, g, b, a); float center = (seg + 0.5f) * degPer + pad; float cxp = x + Mth.cos(center) * radius; diff --git a/src/main/java/org/violetmoon/quark/content/experimental/module/GameNerfsModule.java b/src/main/java/org/violetmoon/quark/content/experimental/module/GameNerfsModule.java index d367554314..192ecbd8a2 100644 --- a/src/main/java/org/violetmoon/quark/content/experimental/module/GameNerfsModule.java +++ b/src/main/java/org/violetmoon/quark/content/experimental/module/GameNerfsModule.java @@ -1,7 +1,6 @@ package org.violetmoon.quark.content.experimental.module; import com.mojang.serialization.Dynamic; - import net.minecraft.ChatFormatting; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; @@ -20,16 +19,10 @@ import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.Level; - -import net.minecraft.world.level.levelgen.structure.Structure; -import net.minecraft.world.level.levelgen.structure.StructureSet; -import net.minecraft.world.level.levelgen.structure.StructureSpawnOverride; -import net.minecraft.world.level.levelgen.structure.structures.JigsawStructure; 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.bus.ZResult; import org.violetmoon.zeta.event.load.ZConfigChanged; import org.violetmoon.zeta.event.play.ZAnvilUpdate; import org.violetmoon.zeta.event.play.ZItemTooltip; @@ -125,7 +118,7 @@ public static boolean canEntityUseElytra(LivingEntity entity, boolean prev) { return true; Level level = entity.level(); - String dim = level.dimensionTypeId().location().toString(); + String dim = level.dimension().location().toString(); return elytraAllowedDimensions.contains(dim); } @@ -147,12 +140,11 @@ public static boolean shouldTripwireHooksCheckForAir() { @PlayEvent public void onMobGriefing(ZEntityMobGriefing event) { - if(!enableSelectiveMobGriefing || event.getEntity() == null) - return; + if(!enableSelectiveMobGriefing || event.getEntity() == null) return; String name = BuiltInRegistries.ENTITY_TYPE.getKey(event.getEntity().getType()).toString(); if(nonGriefingEntities.contains(name)) - event.setResult(ZResult.DENY); + event.setCanGrief(false); } public static Predicate limitMendingItems(Predicate base) { diff --git a/src/main/java/org/violetmoon/quark/content/experimental/module/SpawnerReplacerModule.java b/src/main/java/org/violetmoon/quark/content/experimental/module/SpawnerReplacerModule.java index fb29e9692b..b24984dba8 100644 --- a/src/main/java/org/violetmoon/quark/content/experimental/module/SpawnerReplacerModule.java +++ b/src/main/java/org/violetmoon/quark/content/experimental/module/SpawnerReplacerModule.java @@ -2,7 +2,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; @@ -10,7 +9,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.SpawnerBlockEntity; import net.minecraft.world.level.block.state.BlockState; - import org.violetmoon.zeta.config.Config; import org.violetmoon.zeta.event.bus.LoadEvent; import org.violetmoon.zeta.event.load.ZConfigChanged; @@ -57,7 +55,7 @@ public static void spawnerUpdate(Level level, BlockPos pos, BlockState state, Sp return; BaseSpawner spawner = be.getSpawner(); - Entity example = spawner.getOrCreateDisplayEntity(level, level.getRandom(), pos); + Entity example = spawner.getOrCreateDisplayEntity(level, pos); if(example != null) { EntityType present = example.getType(); if(spawnerReplacements.containsKey(present)) { diff --git a/src/main/java/org/violetmoon/quark/content/experimental/module/VillagerRerollingReworkModule.java b/src/main/java/org/violetmoon/quark/content/experimental/module/VillagerRerollingReworkModule.java index 8e8bb1423a..6c84c0201f 100644 --- a/src/main/java/org/violetmoon/quark/content/experimental/module/VillagerRerollingReworkModule.java +++ b/src/main/java/org/violetmoon/quark/content/experimental/module/VillagerRerollingReworkModule.java @@ -108,9 +108,9 @@ public static void attemptToReroll(Villager villager) { boolean foundEquivalent = false; // We avoid duplicate trades... for(MerchantOffer otherOffer : offers) { - if(ItemStack.isSameItemSameTags(otherOffer.getBaseCostA(), rerolled.getBaseCostA()) && - ItemStack.isSameItemSameTags(otherOffer.getCostB(), rerolled.getCostB()) && - ItemStack.isSameItemSameTags(otherOffer.getResult(), rerolled.getResult())) { + if(ItemStack.isSameItemSameComponents(otherOffer.getBaseCostA(), rerolled.getBaseCostA()) && + ItemStack.isSameItemSameComponents(otherOffer.getCostB(), rerolled.getCostB()) && + ItemStack.isSameItemSameComponents(otherOffer.getResult(), rerolled.getResult())) { foundEquivalent = true; break; } diff --git a/src/main/java/org/violetmoon/quark/content/mobs/client/layer/CrabMoldLayer.java b/src/main/java/org/violetmoon/quark/content/mobs/client/layer/CrabMoldLayer.java index 1ef9758176..9836c1a025 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/client/layer/CrabMoldLayer.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/client/layer/CrabMoldLayer.java @@ -1,14 +1,11 @@ package org.violetmoon.quark.content.mobs.client.layer; import com.mojang.blaze3d.vertex.PoseStack; - import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.resources.ResourceLocation; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.mobs.client.model.CrabModel; import org.violetmoon.quark.content.mobs.entity.Crab; @@ -23,8 +20,7 @@ public CrabMoldLayer(RenderLayerParent renderer) { @Override public void render(@NotNull PoseStack matrix, @NotNull MultiBufferSource buffer, int light, Crab crab, float limbAngle, float limbDistance, float tickDelta, float customAngle, float headYaw, float headPitch) { - if(crab.getVariant() >= Crab.COLORS) - renderColoredCutoutModel(getParentModel(), MOLD_LAYER, matrix, buffer, light, crab, 1F, 1F, 1F); + if (crab.getVariant() >= Crab.COLORS) + renderColoredCutoutModel(getParentModel(), MOLD_LAYER, matrix, buffer, light, crab, -1); } - } diff --git a/src/main/java/org/violetmoon/quark/content/mobs/client/layer/FoxhoundCollarLayer.java b/src/main/java/org/violetmoon/quark/content/mobs/client/layer/FoxhoundCollarLayer.java index fe808650a2..e8a8bf85de 100755 --- a/src/main/java/org/violetmoon/quark/content/mobs/client/layer/FoxhoundCollarLayer.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/client/layer/FoxhoundCollarLayer.java @@ -11,14 +11,11 @@ package org.violetmoon.quark.content.mobs.client.layer; import com.mojang.blaze3d.vertex.PoseStack; - import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.resources.ResourceLocation; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.mobs.client.model.FoxhoundModel; import org.violetmoon.quark.content.mobs.entity.Foxhound; @@ -34,9 +31,8 @@ public FoxhoundCollarLayer(RenderLayerParent renderer) @Override public void render(@NotNull PoseStack matrix, @NotNull MultiBufferSource buffer, int light, Foxhound foxhound, float limbAngle, float limbDistance, float tickDelta, float customAngle, float headYaw, float headPitch) { if(foxhound.isTame() && !foxhound.isInvisible()) { - float[] afloat = foxhound.getCollarColor().getTextureDiffuseColors(); - renderColoredCutoutModel(getParentModel(), WOLF_COLLAR, matrix, buffer, light, foxhound, afloat[0], afloat[1], afloat[2]); + int color = foxhound.getCollarColor().getTextureDiffuseColor(); + renderColoredCutoutModel(getParentModel(), WOLF_COLLAR, matrix, buffer, light, foxhound, color); } } - } diff --git a/src/main/java/org/violetmoon/quark/content/mobs/client/layer/StonelingLichenLayer.java b/src/main/java/org/violetmoon/quark/content/mobs/client/layer/StonelingLichenLayer.java index 7f035ff858..741e5bd859 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/client/layer/StonelingLichenLayer.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/client/layer/StonelingLichenLayer.java @@ -1,14 +1,11 @@ package org.violetmoon.quark.content.mobs.client.layer; import com.mojang.blaze3d.vertex.PoseStack; - import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.resources.ResourceLocation; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.mobs.client.model.StonelingModel; import org.violetmoon.quark.content.mobs.entity.Stoneling; @@ -23,8 +20,7 @@ public StonelingLichenLayer(RenderLayerParent rendere @Override public void render(@NotNull PoseStack matrix, @NotNull MultiBufferSource buffer, int light, Stoneling stoneling, float limbAngle, float limbDistance, float tickDelta, float customAngle, float headYaw, float headPitch) { - if(stoneling.getEntityData().get(Stoneling.HAS_LICHEN)) - renderColoredCutoutModel(getParentModel(), MOLD_LAYER, matrix, buffer, light, stoneling, 1F, 1F, 1F); + if (stoneling.getEntityData().get(Stoneling.HAS_LICHEN)) + renderColoredCutoutModel(getParentModel(), MOLD_LAYER, matrix, buffer, light, stoneling, -1); } - } diff --git a/src/main/java/org/violetmoon/quark/content/mobs/client/layer/ToretoiseOreLayer.java b/src/main/java/org/violetmoon/quark/content/mobs/client/layer/ToretoiseOreLayer.java index 6363db692b..ce9953b6cd 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/client/layer/ToretoiseOreLayer.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/client/layer/ToretoiseOreLayer.java @@ -26,8 +26,7 @@ public void render(@NotNull PoseStack matrix, @NotNull MultiBufferSource buffer, int ore = entity.getOreType(); if(ore != 0 && ore <= Toretoise.ORE_TYPES) { ResourceLocation res = ResourceLocation.parse(String.format(ORE_BASE, ore)); - renderColoredCutoutModel(getParentModel(), res, matrix, buffer, light, entity, 1, 1, 1); + renderColoredCutoutModel(getParentModel(), res, matrix, buffer, light, entity, 1); } } - } diff --git a/src/main/java/org/violetmoon/quark/content/mobs/client/model/StonelingModel.java b/src/main/java/org/violetmoon/quark/content/mobs/client/model/StonelingModel.java index 67035af44c..7d78f2e19f 100755 --- a/src/main/java/org/violetmoon/quark/content/mobs/client/model/StonelingModel.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/client/model/StonelingModel.java @@ -95,12 +95,12 @@ public void setupAnim(Stoneling stoneling, float limbSwing, float limbSwingAmoun } @Override - public void renderToBuffer(@NotNull PoseStack matrix, @NotNull VertexConsumer vb, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) { - body.render(matrix, vb, packedLightIn, packedOverlayIn, red, green, blue, alpha); - arm_right.render(matrix, vb, packedLightIn, packedOverlayIn, red, green, blue, alpha); - arm_left.render(matrix, vb, packedLightIn, packedOverlayIn, red, green, blue, alpha); - leg_right.render(matrix, vb, packedLightIn, packedOverlayIn, red, green, blue, alpha); - leg_left.render(matrix, vb, packedLightIn, packedOverlayIn, red, green, blue, alpha); + public void renderToBuffer(@NotNull PoseStack matrix, @NotNull VertexConsumer vb, int packedLightIn, int packedOverlayIn, int color) { + body.render(matrix, vb, packedLightIn, packedOverlayIn, color); + arm_right.render(matrix, vb, packedLightIn, packedOverlayIn, color); + arm_left.render(matrix, vb, packedLightIn, packedOverlayIn, color); + leg_right.render(matrix, vb, packedLightIn, packedOverlayIn, color); + leg_left.render(matrix, vb, packedLightIn, packedOverlayIn, color); } public void setRotationAngle(ModelPart modelRenderer, float x, float y, float z) { diff --git a/src/main/java/org/violetmoon/quark/content/mobs/entity/Crab.java b/src/main/java/org/violetmoon/quark/content/mobs/entity/Crab.java index 6b8e07da75..4c62a56d3b 100755 --- a/src/main/java/org/violetmoon/quark/content/mobs/entity/Crab.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/entity/Crab.java @@ -15,7 +15,6 @@ import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.ClientGamePacketListener; @@ -24,12 +23,10 @@ import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerEntity; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; import net.minecraft.util.RandomSource; import net.minecraft.world.Difficulty; import net.minecraft.world.InteractionHand; @@ -59,20 +56,14 @@ import net.minecraft.world.level.block.LevelEvent; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.*; -import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.level.pathfinder.PathType; import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.ForgeMod; -import net.minecraftforge.entity.IEntityAdditionalSpawnData; -import net.minecraftforge.fluids.FluidType; -import net.minecraftforge.network.NetworkHooks; - import net.neoforged.neoforge.entity.IEntityWithComplexSpawn; +import net.neoforged.neoforge.fluids.FluidType; 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.mobs.ai.RaveGoal; @@ -175,12 +166,6 @@ public float getWalkTargetValue(BlockPos pos, LevelReader world) { return world.getBlockState(pos.below()).is(CrabsModule.crabSpawnableTag) ? 10.0F : world.getRawBrightness(pos, 0) - 0.5F; } - @NotNull - @Override - public MobType getMobType() { - return MobType.ARTHROPOD; - } - @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); @@ -211,8 +196,8 @@ public InteractionResult mobInteract(@NotNull Player player, @NotNull Interactio } @Override - public double getPassengersRidingOffset() { - return super.getPassengersRidingOffset() / 0.75 * 0.9; + public Vec3 getPassengerRidingPosition(Entity entity) { + return super.getPassengerRidingPosition(entity).scale(1 / (0.75 * 0.9)); } @NotNull @@ -450,10 +435,9 @@ public void party(BlockPos pos, boolean isPartying) { } public boolean shouldStopRaving() { - return jukeboxPosition == null || - !jukeboxPosition.closerToCenterThan(position(), GameEvent.JUKEBOX_PLAY.getNotificationRadius()) || - !level().getBlockState(jukeboxPosition).is(Blocks.JUKEBOX); - + return jukeboxPosition == null + || !jukeboxPosition.closerToCenterThan(position(), GameEvent.JUKEBOX_PLAY.getNotificationRadius()) + || !level().getBlockState(jukeboxPosition).is(Blocks.JUKEBOX); } public boolean isRaving() { diff --git a/src/main/java/org/violetmoon/quark/content/mobs/entity/Foxhound.java b/src/main/java/org/violetmoon/quark/content/mobs/entity/Foxhound.java index 1587d2ad53..10d42bcdac 100755 --- a/src/main/java/org/violetmoon/quark/content/mobs/entity/Foxhound.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/entity/Foxhound.java @@ -16,13 +16,10 @@ import net.minecraft.core.particles.SimpleParticleType; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; -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; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvent; @@ -39,7 +36,10 @@ import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; import net.minecraft.world.entity.ai.goal.target.NonTameRandomTargetGoal; import net.minecraft.world.entity.ai.goal.target.OwnerHurtTargetGoal; -import net.minecraft.world.entity.animal.*; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.animal.Sheep; +import net.minecraft.world.entity.animal.Wolf; import net.minecraft.world.entity.monster.Enemy; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.DyeColor; @@ -52,15 +52,11 @@ import net.minecraft.world.level.biome.Biomes; import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.level.pathfinder.PathType; import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.network.NetworkHooks; - import org.jetbrains.annotations.NotNull; - import org.violetmoon.quark.addons.oddities.block.TinyPotatoBlock; import org.violetmoon.quark.addons.oddities.module.TinyPotatoModule; import org.violetmoon.quark.base.Quark; @@ -348,7 +344,7 @@ public Wolf getBreedOffspring(@NotNull ServerLevel sworld, @NotNull AgeableMob o if(uuid != null) { kid.setOwnerUUID(uuid); - kid.setTame(true); + kid.setTame(true, true); } if(isBlue()) @@ -444,10 +440,4 @@ private void setWoke() { sleep.setSleeping(false); } } - - @NotNull - @Override - public Packet getAddEntityPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } } diff --git a/src/main/java/org/violetmoon/quark/content/mobs/entity/SoulBead.java b/src/main/java/org/violetmoon/quark/content/mobs/entity/SoulBead.java index 4ea67d82d7..9012e892c3 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/entity/SoulBead.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/entity/SoulBead.java @@ -4,8 +4,6 @@ import net.minecraft.core.particles.DustParticleOptions; 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.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; @@ -15,11 +13,8 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.network.NetworkHooks; - import org.jetbrains.annotations.NotNull; import org.joml.Vector3f; - import org.violetmoon.quark.base.handler.QuarkSounds; public class SoulBead extends Entity { @@ -98,10 +93,4 @@ protected void readAdditionalSaveData(@NotNull CompoundTag compound) { compound.putInt(TAG_TARGET_X, entityData.get(TARGET_X)); compound.putInt(TAG_TARGET_Z, entityData.get(TARGET_Z)); } - - @Override - public Packet getAddEntityPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - } diff --git a/src/main/java/org/violetmoon/quark/content/mobs/entity/Stoneling.java b/src/main/java/org/violetmoon/quark/content/mobs/entity/Stoneling.java index 07bf2a93e0..487e4eb57b 100755 --- a/src/main/java/org/violetmoon/quark/content/mobs/entity/Stoneling.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/entity/Stoneling.java @@ -41,7 +41,6 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.level.pathfinder.PathType; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.LootTable; @@ -349,8 +348,8 @@ public void startle() { } @Override - protected void dropCustomDeathLoot(@NotNull DamageSource damage, int looting, boolean wasRecentlyHit) { - super.dropCustomDeathLoot(damage, looting, wasRecentlyHit); + protected void dropCustomDeathLoot(@NotNull ServerLevel level, @NotNull DamageSource damage, boolean wasRecentlyHit) { + super.dropCustomDeathLoot(level, damage, wasRecentlyHit); ItemStack stack = getCarryingItem(); if(!stack.isEmpty()) @@ -404,16 +403,13 @@ public boolean hasLineOfSight(Entity entityIn) { if(this.level().clip(new ClipContext(origin, epos.add(0, height, 0), ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this)).getType() == HitResult.Type.MISS) return true; } - return false; } @Override public void addAdditionalSaveData(@NotNull CompoundTag compound) { super.addAdditionalSaveData(compound); - - compound.put(TAG_CARRYING_ITEM, getCarryingItem().serializeNBT()); - + compound.put(TAG_CARRYING_ITEM, getCarryingItem().save(level().registryAccess())); compound.putByte(TAG_VARIANT, getVariant().getIndex()); compound.putFloat(TAG_HOLD_ANGLE, getItemAngle()); compound.putBoolean(TAG_PLAYER_MADE, isPlayerMade()); diff --git a/src/main/java/org/violetmoon/quark/content/mobs/entity/Toretoise.java b/src/main/java/org/violetmoon/quark/content/mobs/entity/Toretoise.java index 9d4060594f..f815ca1f40 100644 --- a/src/main/java/org/violetmoon/quark/content/mobs/entity/Toretoise.java +++ b/src/main/java/org/violetmoon/quark/content/mobs/entity/Toretoise.java @@ -16,7 +16,6 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.Difficulty; import net.minecraft.world.DifficultyInstance; -import net.minecraft.world.InteractionHand; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.*; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; @@ -37,12 +36,11 @@ import net.minecraft.world.level.block.piston.PistonMovingBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; -import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.level.pathfinder.PathType; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.AABB; -import net.minecraftforge.common.ToolActions; +import net.neoforged.neoforge.common.ItemAbilities; import org.jetbrains.annotations.NotNull; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.base.handler.QuarkSounds; @@ -76,7 +74,6 @@ public class Toretoise extends Animal { public Toretoise(EntityType type, Level world) { super(type, world); - setMaxUpStep(1.0F); setPathfindingMalus(PathType.WATER, 1.0F); } @@ -173,7 +170,7 @@ public void tick() { playSound(QuarkSounds.ENTITY_TORETOISE_ANGRY, 1F, 0.2F); else if(angeryTicks == 0) { serverLevel.sendParticles(ParticleTypes.CLOUD, x, y, z, 200, dangerRange, 0.5, dangerRange, 0); - gameEvent(GameEvent.ENTITY_ROAR); + gameEvent(GameEvent.ENTITY_ACTION); } } @@ -233,10 +230,10 @@ public boolean hurt(DamageSource source, float amount) { if(e instanceof LivingEntity living) { ItemStack held = living.getMainHandItem(); - if(ore != 0 && held.getItem().canPerformAction(held, ToolActions.PICKAXE_DIG)) { //TODO: IForgeItem + if(ore != 0 && held.getItem().canPerformAction(held, ItemAbilities.PICKAXE_DIG)) { //TODO: IForgeItem if(level() instanceof ServerLevel serverLevel) { - if(held.isDamageableItem() && e instanceof Player) - MiscUtil.damageStack((Player) e, InteractionHand.MAIN_HAND, held, 1); + if(held.isDamageableItem() && e instanceof Player player) + held.hurtAndBreak(1, player, EquipmentSlot.MAINHAND); LootParams.Builder lootBuilder = new LootParams.Builder(serverLevel) .withParameter(LootContextParams.TOOL, held); @@ -371,7 +368,7 @@ protected float getWaterSlowDown() { } @Override - public boolean canBeLeashed(@NotNull Player player) { + public boolean canBeLeashed() { return false; } @@ -421,7 +418,8 @@ public static AttributeSupplier.Builder prepareAttributes() { return Mob.createMobAttributes() .add(Attributes.MAX_HEALTH, 60.0D) .add(Attributes.MOVEMENT_SPEED, 0.08D) - .add(Attributes.KNOCKBACK_RESISTANCE, 1.0D); + .add(Attributes.KNOCKBACK_RESISTANCE, 1.0D) + .add(Attributes.STEP_HEIGHT, 1.0D); } @Override // createChild 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 7a74b0f0c4..f05b36d63b 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 @@ -105,12 +105,12 @@ public final void register(ZRegister event) { crab_shell = new ZetaItem("crab_shell", this, new Item.Properties()) .setCondition(() -> enableBrewing).setCreativeTab(CreativeModeTabs.INGREDIENTS, Items.RABBIT_FOOT, false); - crab_bucket = new ZetaMobBucketItem(() -> crabType, () -> Fluids.WATER, () -> QuarkSounds.BUCKET_EMPTY_CRAB, "crab_bucket", this); + crab_bucket = new ZetaMobBucketItem(crabType, Fluids.WATER, QuarkSounds.BUCKET_EMPTY_CRAB, "crab_bucket", this); resilience = new ZetaEffect(Quark.ZETA, "resilience", MobEffectCategory.BENEFICIAL, 0x5b1a04); resilience.addAttributeModifier(Attributes.KNOCKBACK_RESISTANCE, Quark.asResource("resilience_knockback_resistance"), 0.5, AttributeModifier.Operation.ADD_VALUE); - event.getBrewingRegistry().addPotionMix("crab_brewing", () -> Ingredient.of(crab_shell), resilience); + event.getBrewingRegistry().addPotionMix("crab_brewing", crab_shell, resilience); crabType = EntityType.Builder.of(Crab::new, MobCategory.CREATURE) .sized(0.9F, 0.5F) @@ -121,7 +121,7 @@ public final void register(ZRegister event) { 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)) + event.getAdvancementModifierRegistry().addModifier(new FuriousCocktailModifier(this, () -> enableBrewing, resilience) .setCondition(() -> resilienceRequiredForAllEffects)); event.getAdvancementModifierRegistry().addModifier(new TwoByTwoModifier(this, ImmutableSet.of(crabType))); event.getAdvancementModifierRegistry().addModifier(new BalancedDietModifier(this, ImmutableSet.of(crab_leg, cookedCrabLeg))); diff --git a/src/main/java/org/violetmoon/quark/content/tools/entity/TorchArrow.java b/src/main/java/org/violetmoon/quark/content/tools/entity/TorchArrow.java index e4365ea84b..edbc6814a6 100644 --- a/src/main/java/org/violetmoon/quark/content/tools/entity/TorchArrow.java +++ b/src/main/java/org/violetmoon/quark/content/tools/entity/TorchArrow.java @@ -16,10 +16,7 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.Vec3; - import org.jetbrains.annotations.NotNull; - -import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.tools.module.TorchArrowModule; public class TorchArrow extends AbstractArrow { @@ -28,12 +25,8 @@ public TorchArrow(EntityType type, Level level) { super(type, level); } - public TorchArrow(Level level, double x, double y, double z) { - super(TorchArrowModule.torchArrowType, x, y, z, level); - } - public TorchArrow(Level level, LivingEntity shooter) { - super(TorchArrowModule.torchArrowType, shooter, level); + super(TorchArrowModule.torchArrowType, level); } @Override @@ -71,14 +64,12 @@ protected void onHitBlock(BlockHitResult result) { if((state.isAir() || state.canBeReplaced()) && direction != Direction.DOWN) { - if(this.getOwner() instanceof Player p && !Quark.FLAN_INTEGRATION.canPlace(p, finalPos)) + if(this.getOwner() instanceof Player /*p && !Quark.FLAN_INTEGRATION.canPlace(p, finalPos)*/) // TODO: Wait for Neoforge Flan or remove return; - BlockState setState; - if(direction == Direction.UP) - setState = Blocks.TORCH.defaultBlockState(); - else - setState = Blocks.WALL_TORCH.defaultBlockState().setValue(WallTorchBlock.FACING, direction); + BlockState setState = direction == Direction.UP + ? Blocks.TORCH.defaultBlockState() + : Blocks.WALL_TORCH.defaultBlockState().setValue(WallTorchBlock.FACING, direction); if(setState.canSurvive(level(), finalPos)) { level().setBlock(finalPos, setState, 2); @@ -97,7 +88,7 @@ protected void onHitEntity(EntityHitResult result) { // incredible hack to ensure we still set entities on fire without rendering the fire texture igniteForSeconds(1); super.onHitEntity(result); - extinguishFire(); + igniteForSeconds(0); } @Override @@ -107,7 +98,7 @@ protected void onHitEntity(EntityHitResult result) { @Override protected ItemStack getDefaultPickupItem() { - return new ItemStack(TorchArrowModule.torch_arrow); + return new ItemStack(TorchArrowModule.extinguishOnMiss ? Items.ARROW : TorchArrowModule.torch_arrow); } } 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 71d90e0ae3..05a46525cc 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 @@ -1,8 +1,5 @@ package org.violetmoon.quark.content.tools.item; -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; @@ -14,7 +11,6 @@ import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.EquipmentSlotGroup; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Inventory; @@ -36,9 +32,6 @@ import org.violetmoon.zeta.item.ZetaItem; import org.violetmoon.zeta.module.ZetaModule; -import java.util.HashMap; -import java.util.HashSet; - public class PickarangItem extends ZetaItem { public final PickarangType type; @@ -81,7 +74,7 @@ public boolean isCorrectToolForDrops(@NotNull ItemStack stack, @NotNull BlockSta } @Override - public int getMaxDamageZeta(ItemStack stack) { + public int getMaxDamage(ItemStack stack) { return Math.max(type.durability, 0); } @@ -162,9 +155,4 @@ public int getEnchantmentValueZeta(ItemStack stack) { public int getEnchantmentValue() { return type.pickaxeEquivalent != null ? type.pickaxeEquivalent.getEnchantmentValue() : 0; } - - @Override - public boolean canApplyAtEnchantingTableZeta(ItemStack stack, Enchantment enchantment) { - return super.canApplyAtEnchantingTableZeta(stack, enchantment) || ImmutableSet.of(Enchantments.BLOCK_FORTUNE, Enchantments.SILK_TOUCH, Enchantments.BLOCK_EFFICIENCY).contains(enchantment); - } } diff --git a/src/main/java/org/violetmoon/quark/content/tools/module/TorchArrowModule.java b/src/main/java/org/violetmoon/quark/content/tools/module/TorchArrowModule.java index 14bec5b800..e20eeac3b9 100644 --- a/src/main/java/org/violetmoon/quark/content/tools/module/TorchArrowModule.java +++ b/src/main/java/org/violetmoon/quark/content/tools/module/TorchArrowModule.java @@ -1,18 +1,12 @@ package org.violetmoon.quark.content.tools.module; import net.minecraft.client.renderer.entity.EntityRenderers; -import net.minecraft.core.Position; import net.minecraft.core.dispenser.ProjectileDispenseBehavior; 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.entity.projectile.AbstractArrow; -import net.minecraft.world.entity.projectile.Projectile; import net.minecraft.world.item.Item; - -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; import net.minecraft.world.level.block.DispenserBlock; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.content.tools.client.render.entity.TorchArrowRenderer; @@ -50,14 +44,7 @@ public final void register(ZRegister event) { .build("torch_arrow"); event.getRegistry().register(torchArrowType, "torch_arrow", Registries.ENTITY_TYPE); - DispenserBlock.registerBehavior(torch_arrow, new ProjectileDispenseBehavior() { - @Override - protected Projectile getProjectile(Level level, Position position, ItemStack itemStack) { - TorchArrow torch_arrow = new TorchArrow(level, position.x(), position.y(), position.z()); - torch_arrow.pickup = AbstractArrow.Pickup.ALLOWED; - return torch_arrow; - } - }); + DispenserBlock.registerBehavior(torch_arrow, new ProjectileDispenseBehavior(torch_arrow)); } @ZetaLoadModule(clientReplacement = true) diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/block/WaterPetalBlock.java b/src/main/java/org/violetmoon/quark/content/tweaks/block/WaterPetalBlock.java index 7832b7d16e..9f5bfda40b 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/block/WaterPetalBlock.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/block/WaterPetalBlock.java @@ -2,6 +2,8 @@ import java.util.function.BooleanSupplier; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.HitResult; import org.jetbrains.annotations.Nullable; import org.violetmoon.zeta.block.IZetaBlock; import org.violetmoon.zeta.module.ZetaModule; @@ -36,10 +38,10 @@ public WaterPetalBlock(Item base, String regname, @Nullable ZetaModule module, P module.zeta.renderLayerRegistry.put(this, RenderLayerRegistry.Layer.CUTOUT); } - + @Override - public ItemStack getCloneItemStack(BlockGetter pLevel, BlockPos pPos, BlockState pState) { - return new ItemStack(base); + public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, Player player) { + return new ItemStack(base); } @Override diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/recipe/SlabToBlockRecipe.java b/src/main/java/org/violetmoon/quark/content/tweaks/recipe/SlabToBlockRecipe.java index bbd0698ca5..772f1bceee 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/recipe/SlabToBlockRecipe.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/recipe/SlabToBlockRecipe.java @@ -1,19 +1,11 @@ package org.violetmoon.quark.content.tweaks.recipe; -import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.HolderLookup; import net.minecraft.server.MinecraftServer; -import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.item.crafting.RecipeType; -import net.minecraft.world.item.crafting.SimpleCraftingRecipeSerializer; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; - import org.violetmoon.quark.content.tweaks.module.SlabsToBlocksModule; import java.util.Optional; @@ -23,22 +15,21 @@ public class SlabToBlockRecipe extends CustomRecipe { public static final SimpleCraftingRecipeSerializer SERIALIZER = new SimpleCraftingRecipeSerializer<>(SlabToBlockRecipe::new); private boolean locked = false; - public SlabToBlockRecipe(ResourceLocation id, CraftingBookCategory cat) { - super(id, cat); + public SlabToBlockRecipe(CraftingBookCategory category) { + super(category); } @Override - public boolean matches(CraftingContainer container, Level level) { - if(locked) - return false; + public boolean matches(CraftingInput input, Level level) { + if(locked) return false; Item target = null; boolean checked = false; boolean result = false; - for(int i = 0; i < container.getContainerSize(); i++) { - ItemStack stack = container.getItem(i); + for(int i = 0; i < input.size(); i++) { + ItemStack stack = input.getItem(i); if(!stack.isEmpty()) { Item item = stack.getItem(); @@ -46,7 +37,7 @@ public boolean matches(CraftingContainer container, Level level) { if(checked) return false; - result = item == target && checkForOtherRecipes(container, level); + result = item == target && checkForOtherRecipes(input, level); checked = true; } else { if(SlabsToBlocksModule.recipes.containsKey(item)) { @@ -61,23 +52,22 @@ public boolean matches(CraftingContainer container, Level level) { } // very much doubt multiple threads would ever touch this but JUST IN CASE - private synchronized boolean checkForOtherRecipes(CraftingContainer container, Level level) { + private synchronized boolean checkForOtherRecipes(CraftingInput input, Level level) { locked = true; boolean ret = false; MinecraftServer server = level.getServer(); if(server != null) { - Optional optional = server.getRecipeManager().getRecipeFor(RecipeType.CRAFTING, container, level); - ret = !optional.isPresent(); + Optional> optional = server.getRecipeManager().getRecipeFor(RecipeType.CRAFTING, input, level); + ret = optional.isEmpty(); } - locked = false; return ret; } @Override - public ItemStack assemble(CraftingContainer container, RegistryAccess gaming) { - for(int i = 0; i < container.getContainerSize(); i++) { - ItemStack stack = container.getItem(i); + public ItemStack assemble(CraftingInput inv, HolderLookup.Provider provider) { + for(int i = 0; i < inv.size(); i++) { + ItemStack stack = inv.getItem(i); if(!stack.isEmpty()) { Item item = stack.getItem(); @@ -85,7 +75,6 @@ public ItemStack assemble(CraftingContainer container, RegistryAccess gaming) { return new ItemStack(SlabsToBlocksModule.recipes.get(item)); } } - return ItemStack.EMPTY; } diff --git a/src/main/java/org/violetmoon/quark/mixin/mixins/DamageEnchantmentMixin.java b/src/main/java/org/violetmoon/quark/mixin/mixins/DamageEnchantmentMixin.java index 4d23472b30..aca0e031e8 100644 --- a/src/main/java/org/violetmoon/quark/mixin/mixins/DamageEnchantmentMixin.java +++ b/src/main/java/org/violetmoon/quark/mixin/mixins/DamageEnchantmentMixin.java @@ -1,13 +1,10 @@ package org.violetmoon.quark.mixin.mixins; import com.llamalad7.mixinextras.injector.ModifyReturnValue; - import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.DamageEnchantment; - import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; - import org.violetmoon.quark.content.tools.item.PickarangItem; @Mixin(DamageEnchantment.class) diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 41465e5552..b2962ab80b 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -1,7 +1,7 @@ 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 ghostRecipe # ghostRecipe public net.minecraft.client.gui.screens.recipebook.RecipeBookComponent f_100281_ # searchBar public net.minecraft.client.gui.screens.recipebook.RecipeBookComponent f_100284_ # recipeBookPage public net.minecraft.client.gui.screens.recipebook.RecipeBookComponent m_100392_()V # updateSearch @@ -16,11 +16,11 @@ 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 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 gossips # gossips 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 blockState # blockState -public net.minecraft.world.entity.monster.ZombieVillager f_34361_ # gossips +public net.minecraft.world.entity.monster.ZombieVillager gossips # 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 public-f net.minecraft.world.inventory.AbstractContainerMenu f_38840_ # windowId @@ -28,10 +28,12 @@ public-f net.minecraft.world.inventory.Slot f_40221_ # yPos public-f net.minecraft.world.item.Item f_41378_ # containerItem public net.minecraft.world.level.block.ButtonBlock m_51115_()I # tickRate public net.minecraft.world.level.block.DispenserBlock f_52661_ # DISPENSE_BEHAVIOR_REGISTRY -public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity f_58318_ # cookTime -public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity f_58319_ # cookTimeTotal -public net.minecraft.world.level.block.entity.BeaconBlockEntity f_58649_ # beamColorSegments -public net.minecraft.world.level.block.entity.BeaconBlockEntity f_58651_ # beaconSize +public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity cookingProgress # cookingProgress +public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity cookingTotalTime # cookingTotalTime +public net.minecraft.world.level.block.entity.BeaconBlockEntity checkingBeamSections # checkingBeamSections # beamSections +public net.minecraft.world.level.block.entity.BeaconBlockEntity lastCheckY # lastCheckY +public net.minecraft.world.level.block.entity.BeaconBlockEntity$BeaconBeamSection height # height +public net.minecraft.world.level.block.entity.BeaconBlockEntity height public net.minecraft.world.level.block.entity.BlockEntity f_58856_ # cachedBlockState public net.minecraft.world.level.block.entity.SignBlockEntity f_59720_ # signText public net.minecraft.world.level.block.entity.SignBlockEntity f_59721_ # isEditable @@ -56,7 +58,6 @@ public net.minecraft.world.item.CompassItem m_40727_(Lnet/minecraft/nbt/Compound 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 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