Buckets & entity enhancements, cleanup
This commit is contained in:
parent
00fd2b6199
commit
3ec2edd6d5
234 changed files with 1988 additions and 1643 deletions
|
@ -5,7 +5,6 @@ import java.util.List;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||||
import net.fabricmc.fabric.api.tag.TagRegistry;
|
|
||||||
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||||
import net.minecraft.client.color.block.BlockColor;
|
import net.minecraft.client.color.block.BlockColor;
|
||||||
import net.minecraft.client.color.item.ItemColor;
|
import net.minecraft.client.color.item.ItemColor;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
|
|
|
@ -2,6 +2,9 @@ package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.BlockGetter;
|
import net.minecraft.world.level.BlockGetter;
|
||||||
|
@ -12,7 +15,6 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.storage.loot.LootContext;
|
import net.minecraft.world.level.storage.loot.LootContext;
|
||||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import ru.betterend.blocks.basis.EndPlantBlock;
|
import ru.betterend.blocks.basis.EndPlantBlock;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.BlockGetter;
|
import net.minecraft.world.level.BlockGetter;
|
||||||
import net.minecraft.world.level.LevelReader;
|
import net.minecraft.world.level.LevelReader;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.storage.loot.LootContext;
|
import net.minecraft.world.level.storage.loot.LootContext;
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import ru.betterend.blocks.BlockProperties.TripleShape;
|
import ru.betterend.blocks.BlockProperties.TripleShape;
|
||||||
import ru.betterend.blocks.basis.VineBlock;
|
import ru.betterend.blocks.basis.VineBlock;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.tags.BlockTags;
|
import net.minecraft.tags.BlockTags;
|
||||||
import net.minecraft.world.level.LevelReader;
|
import net.minecraft.world.level.LevelReader;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
import net.minecraft.world.level.material.Fluids;
|
import net.minecraft.world.level.material.Fluids;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
|
@ -19,7 +22,6 @@ import net.minecraft.world.level.block.state.StateDefinition;
|
||||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||||
import net.minecraft.world.level.storage.loot.LootContext;
|
import net.minecraft.world.level.storage.loot.LootContext;
|
||||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import ru.betterend.blocks.basis.PedestalBlock;
|
import ru.betterend.blocks.basis.PedestalBlock;
|
||||||
import ru.betterend.blocks.entities.EternalPedestalEntity;
|
import ru.betterend.blocks.entities.EternalPedestalEntity;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
@ -9,7 +12,6 @@ import net.minecraft.world.level.Explosion;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.storage.loot.LootContext;
|
import net.minecraft.world.level.storage.loot.LootContext;
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class EternalRunedFlavolite extends RunedFlavolite {
|
public class EternalRunedFlavolite extends RunedFlavolite {
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.world.level.BlockGetter;
|
import net.minecraft.world.level.BlockGetter;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.world.entity.item.ItemEntity;
|
import net.minecraft.world.entity.item.ItemEntity;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.world.entity.item.ItemEntity;
|
import net.minecraft.world.entity.item.ItemEntity;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.blocks.basis;
|
package ru.betterend.blocks.basis;
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import ru.betterend.patterns.Patterns;
|
import ru.betterend.patterns.Patterns;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.blocks.basis;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.BlockGetter;
|
import net.minecraft.world.level.BlockGetter;
|
||||||
import net.minecraft.world.level.block.BaseEntityBlock;
|
import net.minecraft.world.level.block.BaseEntityBlock;
|
||||||
|
|
|
@ -3,6 +3,7 @@ package ru.betterend.blocks.basis;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
|
|
@ -2,6 +2,9 @@ package ru.betterend.blocks.basis;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
|
@ -20,7 +23,6 @@ import net.minecraft.world.level.block.state.StateDefinition;
|
||||||
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
||||||
import net.minecraft.world.level.material.MaterialColor;
|
import net.minecraft.world.level.material.MaterialColor;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import ru.betterend.blocks.BlockProperties;
|
import ru.betterend.blocks.BlockProperties;
|
||||||
import ru.betterend.blocks.BlockProperties.TripleShape;
|
import ru.betterend.blocks.BlockProperties.TripleShape;
|
||||||
import ru.betterend.blocks.EndTerrainBlock;
|
import ru.betterend.blocks.EndTerrainBlock;
|
||||||
|
|
|
@ -1,6 +1,14 @@
|
||||||
package ru.betterend.blocks.entities.render;
|
package ru.betterend.blocks.entities.render;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
|
import com.mojang.math.Vector3f;
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.floats.Float2FloatFunction;
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2IntFunction;
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
@ -22,12 +30,6 @@ import net.minecraft.world.level.block.entity.ChestBlockEntity;
|
||||||
import net.minecraft.world.level.block.entity.LidBlockEntity;
|
import net.minecraft.world.level.block.entity.LidBlockEntity;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.block.state.properties.ChestType;
|
import net.minecraft.world.level.block.state.properties.ChestType;
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
|
||||||
import com.mojang.math.Vector3f;
|
|
||||||
import it.unimi.dsi.fastutil.floats.Float2FloatFunction;
|
|
||||||
import it.unimi.dsi.fastutil.ints.Int2IntFunction;
|
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.blocks.basis.EndChestBlock;
|
import ru.betterend.blocks.basis.EndChestBlock;
|
||||||
import ru.betterend.blocks.entities.EChestBlockEntity;
|
import ru.betterend.blocks.entities.EChestBlockEntity;
|
||||||
|
|
|
@ -2,6 +2,13 @@ package ru.betterend.blocks.entities.render;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import com.mojang.blaze3d.platform.NativeImage;
|
||||||
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
|
import com.mojang.math.Vector3f;
|
||||||
|
|
||||||
import net.minecraft.client.gui.Font;
|
import net.minecraft.client.gui.Font;
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
@ -20,11 +27,6 @@ import net.minecraft.world.level.block.SignBlock;
|
||||||
import net.minecraft.world.level.block.StandingSignBlock;
|
import net.minecraft.world.level.block.StandingSignBlock;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.block.state.properties.WoodType;
|
import net.minecraft.world.level.block.state.properties.WoodType;
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import com.mojang.blaze3d.platform.NativeImage;
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
|
||||||
import com.mojang.math.Vector3f;
|
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.blocks.basis.EndSignBlock;
|
import ru.betterend.blocks.basis.EndSignBlock;
|
||||||
import ru.betterend.blocks.entities.ESignBlockEntity;
|
import ru.betterend.blocks.entities.ESignBlockEntity;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.blocks.entities.render;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.math.Vector3f;
|
import com.mojang.math.Vector3f;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
|
|
@ -12,6 +12,7 @@ import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.Tesselator;
|
import com.mojang.blaze3d.vertex.Tesselator;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
import com.mojang.math.Matrix4f;
|
import com.mojang.math.Matrix4f;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.minecraft.Util;
|
import net.minecraft.Util;
|
||||||
|
|
|
@ -6,6 +6,7 @@ import java.util.Set;
|
||||||
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.minecraft.client.gui.GuiComponent;
|
import net.minecraft.client.gui.GuiComponent;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.client.gui;
|
||||||
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.minecraft.client.gui.components.ImageButton;
|
import net.minecraft.client.gui.components.ImageButton;
|
||||||
|
|
|
@ -5,6 +5,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
import com.mojang.math.Matrix3f;
|
import com.mojang.math.Matrix3f;
|
||||||
import com.mojang.math.Matrix4f;
|
import com.mojang.math.Matrix4f;
|
||||||
import com.mojang.math.Vector3f;
|
import com.mojang.math.Vector3f;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||||
|
|
|
@ -1,94 +1,95 @@
|
||||||
package ru.betterend.client.render;
|
package ru.betterend.client.render;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
import com.mojang.math.Matrix3f;
|
import com.mojang.math.Matrix3f;
|
||||||
import com.mojang.math.Matrix4f;
|
import com.mojang.math.Matrix4f;
|
||||||
import com.mojang.math.Quaternion;
|
import com.mojang.math.Quaternion;
|
||||||
import com.mojang.math.Vector3f;
|
import com.mojang.math.Vector3f;
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.util.Mth;
|
||||||
public class EndCrystalRenderer {
|
|
||||||
private static final ResourceLocation CRYSTAL_TEXTURE = new ResourceLocation("textures/entity/end_crystal/end_crystal.png");
|
public class EndCrystalRenderer {
|
||||||
private static final ResourceLocation CRYSTAL_BEAM_TEXTURE = new ResourceLocation("textures/entity/end_crystal/end_crystal_beam.png");
|
private static final ResourceLocation CRYSTAL_TEXTURE = new ResourceLocation("textures/entity/end_crystal/end_crystal.png");
|
||||||
private static final RenderType CRYSTAL_BEAM_LAYER;
|
private static final ResourceLocation CRYSTAL_BEAM_TEXTURE = new ResourceLocation("textures/entity/end_crystal/end_crystal_beam.png");
|
||||||
private static final RenderType END_CRYSTAL;
|
private static final RenderType CRYSTAL_BEAM_LAYER;
|
||||||
private static final ModelPart CORE;
|
private static final RenderType END_CRYSTAL;
|
||||||
private static final ModelPart FRAME;
|
private static final ModelPart CORE;
|
||||||
private static final int AGE_CYCLE = 240;
|
private static final ModelPart FRAME;
|
||||||
private static final float SINE_45_DEGREES;
|
private static final int AGE_CYCLE = 240;
|
||||||
|
private static final float SINE_45_DEGREES;
|
||||||
public static void render(int age, int maxAge, float tickDelta, PoseStack matrices, MultiBufferSource vertexConsumerProvider, int light) {
|
|
||||||
float k = (float) AGE_CYCLE / maxAge;
|
public static void render(int age, int maxAge, float tickDelta, PoseStack matrices, MultiBufferSource vertexConsumerProvider, int light) {
|
||||||
float rotation = (age * k + tickDelta) * 3.0F;
|
float k = (float) AGE_CYCLE / maxAge;
|
||||||
VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(END_CRYSTAL);
|
float rotation = (age * k + tickDelta) * 3.0F;
|
||||||
matrices.pushPose();
|
VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(END_CRYSTAL);
|
||||||
matrices.scale(0.8F, 0.8F, 0.8F);
|
matrices.pushPose();
|
||||||
matrices.translate(0.0D, -0.5D, 0.0D);
|
matrices.scale(0.8F, 0.8F, 0.8F);
|
||||||
matrices.mulPose(Vector3f.YP.rotationDegrees(rotation));
|
matrices.translate(0.0D, -0.5D, 0.0D);
|
||||||
matrices.translate(0.0D, 0.8F, 0.0D);
|
matrices.mulPose(Vector3f.YP.rotationDegrees(rotation));
|
||||||
matrices.mulPose(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true));
|
matrices.translate(0.0D, 0.8F, 0.0D);
|
||||||
FRAME.render(matrices, vertexConsumer, light, OverlayTexture.NO_OVERLAY);
|
matrices.mulPose(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true));
|
||||||
matrices.scale(0.875F, 0.875F, 0.875F);
|
FRAME.render(matrices, vertexConsumer, light, OverlayTexture.NO_OVERLAY);
|
||||||
matrices.mulPose(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true));
|
matrices.scale(0.875F, 0.875F, 0.875F);
|
||||||
matrices.mulPose(Vector3f.YP.rotationDegrees(rotation));
|
matrices.mulPose(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true));
|
||||||
FRAME.render(matrices, vertexConsumer, light, OverlayTexture.NO_OVERLAY);
|
matrices.mulPose(Vector3f.YP.rotationDegrees(rotation));
|
||||||
matrices.scale(0.875F, 0.875F, 0.875F);
|
FRAME.render(matrices, vertexConsumer, light, OverlayTexture.NO_OVERLAY);
|
||||||
matrices.mulPose(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true));
|
matrices.scale(0.875F, 0.875F, 0.875F);
|
||||||
matrices.mulPose(Vector3f.YP.rotationDegrees(rotation));
|
matrices.mulPose(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true));
|
||||||
CORE.render(matrices, vertexConsumer, light, OverlayTexture.NO_OVERLAY);
|
matrices.mulPose(Vector3f.YP.rotationDegrees(rotation));
|
||||||
matrices.popPose();
|
CORE.render(matrices, vertexConsumer, light, OverlayTexture.NO_OVERLAY);
|
||||||
}
|
matrices.popPose();
|
||||||
|
}
|
||||||
public static void renderBeam(BlockPos start, BlockPos end, float tickDelta, int age, PoseStack matrices, MultiBufferSource vertexConsumers, int light) {
|
|
||||||
float dx = start.getX() - end.getX() + 1.0F;
|
public static void renderBeam(BlockPos start, BlockPos end, float tickDelta, int age, PoseStack matrices, MultiBufferSource vertexConsumers, int light) {
|
||||||
float dy = start.getY() - end.getY() + 1.0F;
|
float dx = start.getX() - end.getX() + 1.0F;
|
||||||
float dz = start.getZ() - end.getZ() + 1.0F;
|
float dy = start.getY() - end.getY() + 1.0F;
|
||||||
float f = Mth.sqrt(dx * dx + dz * dz);
|
float dz = start.getZ() - end.getZ() + 1.0F;
|
||||||
float g = Mth.sqrt(dx * dx + dy * dy + dz * dz);
|
float f = Mth.sqrt(dx * dx + dz * dz);
|
||||||
matrices.pushPose();
|
float g = Mth.sqrt(dx * dx + dy * dy + dz * dz);
|
||||||
matrices.translate(0.0D, 2.0D, 0.0D);
|
matrices.pushPose();
|
||||||
matrices.mulPose(Vector3f.YP.rotation((float)(-Math.atan2((double) dz, (double) dx)) - 1.5707964F));
|
matrices.translate(0.0D, 2.0D, 0.0D);
|
||||||
matrices.mulPose(Vector3f.XP.rotation((float)(-Math.atan2((double) f, (double) dy)) - 1.5707964F));
|
matrices.mulPose(Vector3f.YP.rotation((float)(-Math.atan2((double) dz, (double) dx)) - 1.5707964F));
|
||||||
VertexConsumer vertexConsumer = vertexConsumers.getBuffer(CRYSTAL_BEAM_LAYER);
|
matrices.mulPose(Vector3f.XP.rotation((float)(-Math.atan2((double) f, (double) dy)) - 1.5707964F));
|
||||||
float h = 0.0F - ((float) age + tickDelta) * 0.01F;
|
VertexConsumer vertexConsumer = vertexConsumers.getBuffer(CRYSTAL_BEAM_LAYER);
|
||||||
float i = Mth.sqrt(dx * dx + dy * dy + dz * dz) / 32.0F - ((float) age + tickDelta) * 0.01F;
|
float h = 0.0F - ((float) age + tickDelta) * 0.01F;
|
||||||
float k = 0.0F;
|
float i = Mth.sqrt(dx * dx + dy * dy + dz * dz) / 32.0F - ((float) age + tickDelta) * 0.01F;
|
||||||
float l = 0.75F;
|
float k = 0.0F;
|
||||||
float m = 0.0F;
|
float l = 0.75F;
|
||||||
PoseStack.Pose entry = matrices.last();
|
float m = 0.0F;
|
||||||
Matrix4f matrix4f = entry.pose();
|
PoseStack.Pose entry = matrices.last();
|
||||||
Matrix3f matrix3f = entry.normal();
|
Matrix4f matrix4f = entry.pose();
|
||||||
|
Matrix3f matrix3f = entry.normal();
|
||||||
for(int n = 1; n <= 8; ++n) {
|
|
||||||
float o = Mth.sin((float) n * 6.2831855F / 8.0F) * 0.75F;
|
for(int n = 1; n <= 8; ++n) {
|
||||||
float p = Mth.cos((float) n * 6.2831855F / 8.0F) * 0.75F;
|
float o = Mth.sin((float) n * 6.2831855F / 8.0F) * 0.75F;
|
||||||
float q = (float) n / 8.0F;
|
float p = Mth.cos((float) n * 6.2831855F / 8.0F) * 0.75F;
|
||||||
vertexConsumer.vertex(matrix4f, k * 0.2F, l * 0.2F, 0.0F).color(0, 0, 0, 255).uv(m, h).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).endVertex();
|
float q = (float) n / 8.0F;
|
||||||
vertexConsumer.vertex(matrix4f, k, l, g).color(255, 255, 255, 255).uv(m, i).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).endVertex();
|
vertexConsumer.vertex(matrix4f, k * 0.2F, l * 0.2F, 0.0F).color(0, 0, 0, 255).uv(m, h).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).endVertex();
|
||||||
vertexConsumer.vertex(matrix4f, o, p, g).color(255, 255, 255, 255).uv(q, i).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).endVertex();
|
vertexConsumer.vertex(matrix4f, k, l, g).color(255, 255, 255, 255).uv(m, i).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).endVertex();
|
||||||
vertexConsumer.vertex(matrix4f, o * 0.2F, p * 0.2F, 0.0F).color(0, 0, 0, 255).uv(q, h).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).endVertex();
|
vertexConsumer.vertex(matrix4f, o, p, g).color(255, 255, 255, 255).uv(q, i).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).endVertex();
|
||||||
k = o;
|
vertexConsumer.vertex(matrix4f, o * 0.2F, p * 0.2F, 0.0F).color(0, 0, 0, 255).uv(q, h).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).endVertex();
|
||||||
l = p;
|
k = o;
|
||||||
m = q;
|
l = p;
|
||||||
}
|
m = q;
|
||||||
|
}
|
||||||
matrices.popPose();
|
|
||||||
}
|
matrices.popPose();
|
||||||
|
}
|
||||||
static {
|
|
||||||
END_CRYSTAL = RenderType.entityCutoutNoCull(CRYSTAL_TEXTURE);
|
static {
|
||||||
CRYSTAL_BEAM_LAYER = RenderType.entitySmoothCutout(CRYSTAL_BEAM_TEXTURE);
|
END_CRYSTAL = RenderType.entityCutoutNoCull(CRYSTAL_TEXTURE);
|
||||||
SINE_45_DEGREES = (float) Math.sin(0.7853981633974483D);
|
CRYSTAL_BEAM_LAYER = RenderType.entitySmoothCutout(CRYSTAL_BEAM_TEXTURE);
|
||||||
FRAME = new ModelPart(64, 32, 0, 0);
|
SINE_45_DEGREES = (float) Math.sin(0.7853981633974483D);
|
||||||
FRAME.addBox(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F);
|
FRAME = new ModelPart(64, 32, 0, 0);
|
||||||
CORE = new ModelPart(64, 32, 32, 0);
|
FRAME.addBox(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F);
|
||||||
CORE.addBox(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F);
|
CORE = new ModelPart(64, 32, 32, 0);
|
||||||
}
|
CORE.addBox(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,69 +1,70 @@
|
||||||
package ru.betterend.client.render;
|
package ru.betterend.client.render;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
import com.mojang.math.Vector3f;
|
import com.mojang.math.Vector3f;
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.core.Vec3i;
|
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.core.Vec3i;
|
||||||
import ru.betterend.BetterEnd;
|
import net.minecraft.util.Mth;
|
||||||
import ru.betterend.blocks.AuroraCrystalBlock;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.util.ColorUtil;
|
import ru.betterend.blocks.AuroraCrystalBlock;
|
||||||
import ru.betterend.util.MHelper;
|
import ru.betterend.util.ColorUtil;
|
||||||
|
import ru.betterend.util.MHelper;
|
||||||
public class EternalCrystalRenderer {
|
|
||||||
private static final RenderType RENDER_LAYER;
|
public class EternalCrystalRenderer {
|
||||||
private static final ModelPart[] SHARDS;
|
private static final RenderType RENDER_LAYER;
|
||||||
private static final ModelPart CORE;
|
private static final ModelPart[] SHARDS;
|
||||||
|
private static final ModelPart CORE;
|
||||||
public static void render(int age, float tickDelta, PoseStack matrices, MultiBufferSource vertexConsumerProvider, int light) {
|
|
||||||
VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(RENDER_LAYER);
|
public static void render(int age, float tickDelta, PoseStack matrices, MultiBufferSource vertexConsumerProvider, int light) {
|
||||||
float[] colors = colors(age);
|
VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(RENDER_LAYER);
|
||||||
float rotation = (age + tickDelta) / 25.0F + 6.0F;
|
float[] colors = colors(age);
|
||||||
matrices.pushPose();
|
float rotation = (age + tickDelta) / 25.0F + 6.0F;
|
||||||
matrices.scale(0.6F, 0.6F, 0.6F);
|
matrices.pushPose();
|
||||||
matrices.mulPose(Vector3f.YP.rotation(rotation));
|
matrices.scale(0.6F, 0.6F, 0.6F);
|
||||||
CORE.render(matrices, vertexConsumer, light, OverlayTexture.NO_OVERLAY, colors[0], colors[1], colors[2], colors[3]);
|
matrices.mulPose(Vector3f.YP.rotation(rotation));
|
||||||
|
CORE.render(matrices, vertexConsumer, light, OverlayTexture.NO_OVERLAY, colors[0], colors[1], colors[2], colors[3]);
|
||||||
for (int i = 0; i < 4; i++) {
|
|
||||||
matrices.pushPose();
|
for (int i = 0; i < 4; i++) {
|
||||||
float offset = Mth.sin(rotation * 2 + i) * 0.15F;
|
matrices.pushPose();
|
||||||
matrices.translate(0, offset, 0);
|
float offset = Mth.sin(rotation * 2 + i) * 0.15F;
|
||||||
SHARDS[i].render(matrices, vertexConsumer, light, OverlayTexture.NO_OVERLAY, colors[0], colors[1], colors[2], colors[3]);
|
matrices.translate(0, offset, 0);
|
||||||
matrices.popPose();
|
SHARDS[i].render(matrices, vertexConsumer, light, OverlayTexture.NO_OVERLAY, colors[0], colors[1], colors[2], colors[3]);
|
||||||
}
|
matrices.popPose();
|
||||||
|
}
|
||||||
matrices.popPose();
|
|
||||||
}
|
matrices.popPose();
|
||||||
|
}
|
||||||
public static float[] colors(int age) {
|
|
||||||
double delta = age * 0.01;
|
public static float[] colors(int age) {
|
||||||
int index = MHelper.floor(delta);
|
double delta = age * 0.01;
|
||||||
int index2 = (index + 1) & 3;
|
int index = MHelper.floor(delta);
|
||||||
delta -= index;
|
int index2 = (index + 1) & 3;
|
||||||
index &= 3;
|
delta -= index;
|
||||||
|
index &= 3;
|
||||||
Vec3i color1 = AuroraCrystalBlock.COLORS[index];
|
|
||||||
Vec3i color2 = AuroraCrystalBlock.COLORS[index2];
|
Vec3i color1 = AuroraCrystalBlock.COLORS[index];
|
||||||
|
Vec3i color2 = AuroraCrystalBlock.COLORS[index2];
|
||||||
int r = MHelper.floor(Mth.lerp(delta, color1.getX(), color2.getX()));
|
|
||||||
int g = MHelper.floor(Mth.lerp(delta, color1.getY(), color2.getY()));
|
int r = MHelper.floor(Mth.lerp(delta, color1.getX(), color2.getX()));
|
||||||
int b = MHelper.floor(Mth.lerp(delta, color1.getZ(), color2.getZ()));
|
int g = MHelper.floor(Mth.lerp(delta, color1.getY(), color2.getY()));
|
||||||
|
int b = MHelper.floor(Mth.lerp(delta, color1.getZ(), color2.getZ()));
|
||||||
return ColorUtil.toFloatArray(MHelper.color(r, g, b));
|
|
||||||
}
|
return ColorUtil.toFloatArray(MHelper.color(r, g, b));
|
||||||
|
}
|
||||||
static {
|
|
||||||
RENDER_LAYER = RenderType.beaconBeam(BetterEnd.makeID("textures/entity/eternal_crystal.png"), true);
|
static {
|
||||||
SHARDS = new ModelPart[4];
|
RENDER_LAYER = RenderType.beaconBeam(BetterEnd.makeID("textures/entity/eternal_crystal.png"), true);
|
||||||
SHARDS[0] = new ModelPart(16, 16, 2, 4).addBox(-5.0F, 1.0F, -3.0F, 2.0F, 8.0F, 2.0F);
|
SHARDS = new ModelPart[4];
|
||||||
SHARDS[1] = new ModelPart(16, 16, 2, 4).addBox(3.0F, -1.0F, -1.0F, 2.0F, 8.0F, 2.0F);
|
SHARDS[0] = new ModelPart(16, 16, 2, 4).addBox(-5.0F, 1.0F, -3.0F, 2.0F, 8.0F, 2.0F);
|
||||||
SHARDS[2] = new ModelPart(16, 16, 2, 4).addBox(-1.0F, 0.0F, -5.0F, 2.0F, 4.0F, 2.0F);
|
SHARDS[1] = new ModelPart(16, 16, 2, 4).addBox(3.0F, -1.0F, -1.0F, 2.0F, 8.0F, 2.0F);
|
||||||
SHARDS[3] = new ModelPart(16, 16, 2, 4).addBox(0.0F, 3.0F, 4.0F, 2.0F, 6.0F, 2.0F);
|
SHARDS[2] = new ModelPart(16, 16, 2, 4).addBox(-1.0F, 0.0F, -5.0F, 2.0F, 4.0F, 2.0F);
|
||||||
CORE = new ModelPart(16, 16, 0, 0);
|
SHARDS[3] = new ModelPart(16, 16, 2, 4).addBox(0.0F, 3.0F, 4.0F, 2.0F, 6.0F, 2.0F);
|
||||||
CORE.addBox(-2.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F);
|
CORE = new ModelPart(16, 16, 0, 0);
|
||||||
}
|
CORE.addBox(-2.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -4,13 +4,15 @@ import java.lang.reflect.Type;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import net.minecraft.util.GsonHelper;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.common.reflect.TypeToken;
|
import com.google.common.reflect.TypeToken;
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
|
||||||
|
import net.minecraft.util.GsonHelper;
|
||||||
import ru.betterend.util.JsonFactory;
|
import ru.betterend.util.JsonFactory;
|
||||||
|
|
||||||
public final class ConfigKeeper {
|
public final class ConfigKeeper {
|
||||||
|
|
|
@ -1,91 +1,93 @@
|
||||||
package ru.betterend.config;
|
package ru.betterend.config;
|
||||||
|
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import ru.betterend.config.ConfigKeeper.Entry;
|
|
||||||
import ru.betterend.config.ConfigKeeper.FloatRange;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import ru.betterend.config.ConfigKeeper.IntegerRange;
|
import ru.betterend.config.ConfigKeeper.Entry;
|
||||||
|
import ru.betterend.config.ConfigKeeper.FloatRange;
|
||||||
public class IdConfig extends Config {
|
import ru.betterend.config.ConfigKeeper.IntegerRange;
|
||||||
|
|
||||||
protected final BiFunction<ResourceLocation, String, ConfigKey> keyFactory;
|
public class IdConfig extends Config {
|
||||||
|
|
||||||
public IdConfig(String group, BiFunction<ResourceLocation, String, ConfigKey> keyFactory) {
|
protected final BiFunction<ResourceLocation, String, ConfigKey> keyFactory;
|
||||||
super(group);
|
|
||||||
this.keyFactory = keyFactory;
|
public IdConfig(String group, BiFunction<ResourceLocation, String, ConfigKey> keyFactory) {
|
||||||
}
|
super(group);
|
||||||
|
this.keyFactory = keyFactory;
|
||||||
@Override
|
}
|
||||||
protected void registerEntries() {}
|
|
||||||
|
@Override
|
||||||
protected ConfigKey createKey(ResourceLocation id, String key) {
|
protected void registerEntries() {}
|
||||||
return this.keyFactory.apply(id, key);
|
|
||||||
}
|
protected ConfigKey createKey(ResourceLocation id, String key) {
|
||||||
|
return this.keyFactory.apply(id, key);
|
||||||
@Nullable
|
}
|
||||||
public <T, E extends Entry<T>> E getEntry(ResourceLocation id, String key, Class<E> type) {
|
|
||||||
return this.getEntry(createKey(id, key), type);
|
@Nullable
|
||||||
}
|
public <T, E extends Entry<T>> E getEntry(ResourceLocation id, String key, Class<E> type) {
|
||||||
|
return this.getEntry(createKey(id, key), type);
|
||||||
@Nullable
|
}
|
||||||
public <T, E extends Entry<T>> T getDefault(ResourceLocation id, String key, Class<E> type) {
|
|
||||||
return this.getDefault(createKey(id, key), type);
|
@Nullable
|
||||||
}
|
public <T, E extends Entry<T>> T getDefault(ResourceLocation id, String key, Class<E> type) {
|
||||||
|
return this.getDefault(createKey(id, key), type);
|
||||||
public String getString(ResourceLocation id, String key, String defaultValue) {
|
}
|
||||||
return this.getString(createKey(id, key), defaultValue);
|
|
||||||
}
|
public String getString(ResourceLocation id, String key, String defaultValue) {
|
||||||
|
return this.getString(createKey(id, key), defaultValue);
|
||||||
public String getString(ResourceLocation id, String key) {
|
}
|
||||||
return this.getString(createKey(id, key));
|
|
||||||
}
|
public String getString(ResourceLocation id, String key) {
|
||||||
|
return this.getString(createKey(id, key));
|
||||||
public boolean setString(ResourceLocation id, String key, String value) {
|
}
|
||||||
return this.setString(createKey(id, key), value);
|
|
||||||
}
|
public boolean setString(ResourceLocation id, String key, String value) {
|
||||||
|
return this.setString(createKey(id, key), value);
|
||||||
public int getInt(ResourceLocation id, String key, int defaultValue) {
|
}
|
||||||
return this.getInt(createKey(id, key), defaultValue);
|
|
||||||
}
|
public int getInt(ResourceLocation id, String key, int defaultValue) {
|
||||||
|
return this.getInt(createKey(id, key), defaultValue);
|
||||||
public int getInt(ResourceLocation id, String key) {
|
}
|
||||||
return this.getInt(createKey(id, key));
|
|
||||||
}
|
public int getInt(ResourceLocation id, String key) {
|
||||||
|
return this.getInt(createKey(id, key));
|
||||||
public boolean setInt(ResourceLocation id, String key, int value) {
|
}
|
||||||
return this.setInt(createKey(id, key), value);
|
|
||||||
}
|
public boolean setInt(ResourceLocation id, String key, int value) {
|
||||||
|
return this.setInt(createKey(id, key), value);
|
||||||
public boolean setRangedInt(ResourceLocation id, String key, int value) {
|
}
|
||||||
return this.setRanged(createKey(id, key), value, IntegerRange.class);
|
|
||||||
}
|
public boolean setRangedInt(ResourceLocation id, String key, int value) {
|
||||||
|
return this.setRanged(createKey(id, key), value, IntegerRange.class);
|
||||||
public boolean setRangedFloat(ResourceLocation id, String key, float value) {
|
}
|
||||||
return this.setRanged(createKey(id, key), value, FloatRange.class);
|
|
||||||
}
|
public boolean setRangedFloat(ResourceLocation id, String key, float value) {
|
||||||
|
return this.setRanged(createKey(id, key), value, FloatRange.class);
|
||||||
public float getFloat(ResourceLocation id, String key, float defaultValue) {
|
}
|
||||||
return this.getFloat(createKey(id, key), defaultValue);
|
|
||||||
}
|
public float getFloat(ResourceLocation id, String key, float defaultValue) {
|
||||||
|
return this.getFloat(createKey(id, key), defaultValue);
|
||||||
public float getFloat(ResourceLocation id, String key) {
|
}
|
||||||
return this.getFloat(createKey(id, key));
|
|
||||||
}
|
public float getFloat(ResourceLocation id, String key) {
|
||||||
|
return this.getFloat(createKey(id, key));
|
||||||
public boolean setFloat(ResourceLocation id, String key, float value) {
|
}
|
||||||
return this.setFloat(createKey(id, key), value);
|
|
||||||
}
|
public boolean setFloat(ResourceLocation id, String key, float value) {
|
||||||
|
return this.setFloat(createKey(id, key), value);
|
||||||
public boolean getBoolean(ResourceLocation id, String key, boolean defaultValue) {
|
}
|
||||||
return this.getBoolean(createKey(id, key), defaultValue);
|
|
||||||
}
|
public boolean getBoolean(ResourceLocation id, String key, boolean defaultValue) {
|
||||||
|
return this.getBoolean(createKey(id, key), defaultValue);
|
||||||
public boolean getBoolean(ResourceLocation id, String key) {
|
}
|
||||||
return this.getBoolean(createKey(id, key));
|
|
||||||
}
|
public boolean getBoolean(ResourceLocation id, String key) {
|
||||||
|
return this.getBoolean(createKey(id, key));
|
||||||
public boolean setBoolean(ResourceLocation id, String key, boolean value) {
|
}
|
||||||
return this.setBoolean(createKey(id, key), value);
|
|
||||||
}
|
public boolean setBoolean(ResourceLocation id, String key, boolean value) {
|
||||||
}
|
return this.setBoolean(createKey(id, key), value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.entity;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.network.protocol.game.ClientboundGameEventPacket;
|
import net.minecraft.network.protocol.game.ClientboundGameEventPacket;
|
||||||
|
@ -30,7 +31,6 @@ import net.minecraft.world.entity.animal.AbstractSchoolingFish;
|
||||||
import net.minecraft.world.entity.item.ItemEntity;
|
import net.minecraft.world.entity.item.ItemEntity;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Items;
|
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.ServerLevelAccessor;
|
import net.minecraft.world.level.ServerLevelAccessor;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
|
@ -49,7 +49,13 @@ public class CubozoaEntity extends AbstractSchoolingFish {
|
||||||
@Override
|
@Override
|
||||||
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, SpawnGroupData entityData, CompoundTag entityTag) {
|
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, SpawnGroupData entityData, CompoundTag entityTag) {
|
||||||
SpawnGroupData data = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityTag);
|
SpawnGroupData data = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityTag);
|
||||||
if (EndBiomes.getFromBiome(world.getBiome(blockPosition())) == EndBiomes.SULPHUR_SPRINGS) {
|
if (entityTag != null) {
|
||||||
|
if (entityTag.contains("variant"))
|
||||||
|
this.entityData.set(VARIANT, entityTag.getByte("variant"));
|
||||||
|
if (entityTag.contains("scale"))
|
||||||
|
this.entityData.set(SCALE, entityTag.getByte("scale"));
|
||||||
|
}
|
||||||
|
else if (EndBiomes.getFromBiome(world.getBiome(blockPosition())) == EndBiomes.SULPHUR_SPRINGS) {
|
||||||
this.entityData.set(VARIANT, (byte) 1);
|
this.entityData.set(VARIANT, (byte) 1);
|
||||||
}
|
}
|
||||||
this.refreshDimensions();
|
this.refreshDimensions();
|
||||||
|
@ -67,7 +73,7 @@ public class CubozoaEntity extends AbstractSchoolingFish {
|
||||||
public void addAdditionalSaveData(CompoundTag tag) {
|
public void addAdditionalSaveData(CompoundTag tag) {
|
||||||
super.addAdditionalSaveData(tag);
|
super.addAdditionalSaveData(tag);
|
||||||
tag.putByte("Variant", (byte) getVariant());
|
tag.putByte("Variant", (byte) getVariant());
|
||||||
tag.putByte("Scale", (byte) getScale());
|
tag.putByte("Scale", getByteScale());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -80,6 +86,15 @@ public class CubozoaEntity extends AbstractSchoolingFish {
|
||||||
this.entityData.set(SCALE, tag.getByte("Scale"));
|
this.entityData.set(SCALE, tag.getByte("Scale"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ItemStack getBucketItemStack() {
|
||||||
|
ItemStack bucket = EndItems.BUCKET_CUBOZOA.getDefaultInstance();
|
||||||
|
CompoundTag tag = bucket.getOrCreateTag();
|
||||||
|
tag.putByte("variant", entityData.get(VARIANT));
|
||||||
|
tag.putByte("scale", entityData.get(SCALE));
|
||||||
|
return bucket;
|
||||||
|
}
|
||||||
|
|
||||||
public static AttributeSupplier.Builder createMobAttributes() {
|
public static AttributeSupplier.Builder createMobAttributes() {
|
||||||
return LivingEntity.createLivingAttributes()
|
return LivingEntity.createLivingAttributes()
|
||||||
|
@ -91,9 +106,13 @@ public class CubozoaEntity extends AbstractSchoolingFish {
|
||||||
public int getVariant() {
|
public int getVariant() {
|
||||||
return (int) this.entityData.get(VARIANT);
|
return (int) this.entityData.get(VARIANT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public byte getByteScale() {
|
||||||
|
return this.entityData.get(SCALE);
|
||||||
|
}
|
||||||
|
|
||||||
public float getScale() {
|
public float getScale() {
|
||||||
return this.entityData.get(SCALE) / 32F + 0.75F;
|
return getByteScale() / 32F + 0.75F;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean canSpawn(EntityType<CubozoaEntity> type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) {
|
public static boolean canSpawn(EntityType<CubozoaEntity> type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) {
|
||||||
|
@ -117,11 +136,6 @@ public class CubozoaEntity extends AbstractSchoolingFish {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected ItemStack getBucketItemStack() {
|
|
||||||
return new ItemStack(Items.WATER_BUCKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected SoundEvent getFlopSound() {
|
protected SoundEvent getFlopSound() {
|
||||||
return SoundEvents.SALMON_FLOP;
|
return SoundEvents.SALMON_FLOP;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.entity;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
@ -31,8 +32,6 @@ import net.minecraft.world.level.levelgen.Heightmap.Types;
|
||||||
import net.minecraft.world.level.pathfinder.BlockPathTypes;
|
import net.minecraft.world.level.pathfinder.BlockPathTypes;
|
||||||
import net.minecraft.world.level.pathfinder.Path;
|
import net.minecraft.world.level.pathfinder.Path;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
import ru.betterend.entity.DragonflyEntity.DragonflyLookControl;
|
|
||||||
import ru.betterend.entity.DragonflyEntity.WanderAroundGoal;
|
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndSounds;
|
import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.util.BlocksHelper;
|
import ru.betterend.util.BlocksHelper;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.entity;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
@ -42,7 +43,13 @@ public class EndFishEntity extends AbstractSchoolingFish {
|
||||||
@Override
|
@Override
|
||||||
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, SpawnGroupData entityData, CompoundTag entityTag) {
|
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, SpawnGroupData entityData, CompoundTag entityTag) {
|
||||||
SpawnGroupData data = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityTag);
|
SpawnGroupData data = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityTag);
|
||||||
if (EndBiomes.getFromBiome(world.getBiome(blockPosition())) == EndBiomes.SULPHUR_SPRINGS) {
|
if (entityTag != null) {
|
||||||
|
if (entityTag.contains("variant"))
|
||||||
|
this.entityData.set(VARIANT, entityTag.getByte("variant"));
|
||||||
|
if (entityTag.contains("scale"))
|
||||||
|
this.entityData.set(SCALE, entityTag.getByte("scale"));
|
||||||
|
}
|
||||||
|
else if (EndBiomes.getFromBiome(world.getBiome(blockPosition())) == EndBiomes.SULPHUR_SPRINGS) {
|
||||||
this.entityData.set(VARIANT, (byte) (random.nextInt(VARIANTS_SULPHUR) + VARIANTS_NORMAL));
|
this.entityData.set(VARIANT, (byte) (random.nextInt(VARIANTS_SULPHUR) + VARIANTS_NORMAL));
|
||||||
}
|
}
|
||||||
this.refreshDimensions();
|
this.refreshDimensions();
|
||||||
|
@ -60,7 +67,7 @@ public class EndFishEntity extends AbstractSchoolingFish {
|
||||||
public void addAdditionalSaveData(CompoundTag tag) {
|
public void addAdditionalSaveData(CompoundTag tag) {
|
||||||
super.addAdditionalSaveData(tag);
|
super.addAdditionalSaveData(tag);
|
||||||
tag.putByte("Variant", (byte) getVariant());
|
tag.putByte("Variant", (byte) getVariant());
|
||||||
tag.putByte("Scale", (byte) getScale());
|
tag.putByte("Scale", getByteScale());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -76,7 +83,11 @@ public class EndFishEntity extends AbstractSchoolingFish {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ItemStack getBucketItemStack() {
|
protected ItemStack getBucketItemStack() {
|
||||||
return new ItemStack(EndItems.BUCKET_END_FISH);
|
ItemStack bucket = EndItems.BUCKET_END_FISH.getDefaultInstance();
|
||||||
|
CompoundTag tag = bucket.getOrCreateTag();
|
||||||
|
tag.putByte("variant", entityData.get(VARIANT));
|
||||||
|
tag.putByte("scale", entityData.get(SCALE));
|
||||||
|
return bucket;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -121,8 +132,12 @@ public class EndFishEntity extends AbstractSchoolingFish {
|
||||||
return (int) this.entityData.get(VARIANT);
|
return (int) this.entityData.get(VARIANT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public byte getByteScale() {
|
||||||
|
return this.entityData.get(SCALE);
|
||||||
|
}
|
||||||
|
|
||||||
public float getScale() {
|
public float getScale() {
|
||||||
return this.entityData.get(SCALE) / 32F + 0.75F;
|
return getByteScale() / 32F + 0.75F;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean canSpawn(EntityType<EndFishEntity> type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) {
|
public static boolean canSpawn(EntityType<EndFishEntity> type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) {
|
||||||
|
|
|
@ -3,6 +3,7 @@ package ru.betterend.entity;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||||
import net.minecraft.core.particles.ParticleOptions;
|
import net.minecraft.core.particles.ParticleOptions;
|
||||||
|
@ -37,11 +38,6 @@ import net.minecraft.world.level.ServerLevelAccessor;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
import ru.betterend.entity.EndSlimeEntity.EndSlimeMoveControl;
|
|
||||||
import ru.betterend.entity.EndSlimeEntity.FaceTowardTargetGoal;
|
|
||||||
import ru.betterend.entity.EndSlimeEntity.MoveGoal;
|
|
||||||
import ru.betterend.entity.EndSlimeEntity.RandomLookGoal;
|
|
||||||
import ru.betterend.entity.EndSlimeEntity.SwimmingGoal;
|
|
||||||
import ru.betterend.interfaces.ISlime;
|
import ru.betterend.interfaces.ISlime;
|
||||||
import ru.betterend.registry.EndBiomes;
|
import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.util.BlocksHelper;
|
import ru.betterend.util.BlocksHelper;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.entity;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
|
|
@ -5,6 +5,7 @@ import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
@ -46,9 +47,6 @@ import net.minecraft.world.phys.AABB;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.blocks.BlockProperties;
|
import ru.betterend.blocks.BlockProperties;
|
||||||
import ru.betterend.entity.SilkMothEntity.MothLookControl;
|
|
||||||
import ru.betterend.entity.SilkMothEntity.ReturnToHiveGoal;
|
|
||||||
import ru.betterend.entity.SilkMothEntity.WanderAroundGoal;
|
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndEntities;
|
import ru.betterend.registry.EndEntities;
|
||||||
import ru.betterend.registry.EndItems;
|
import ru.betterend.registry.EndItems;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.entity.model;
|
package ru.betterend.entity.model;
|
||||||
|
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
import net.minecraft.client.model.EntityModel;
|
import net.minecraft.client.model.EntityModel;
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.entity.model;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
|
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.entity.model;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
|
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import ru.betterend.entity.DragonflyEntity;
|
import ru.betterend.entity.DragonflyEntity;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.entity.model;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
|
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import ru.betterend.entity.EndFishEntity;
|
import ru.betterend.entity.EndFishEntity;
|
||||||
|
|
|
@ -3,6 +3,7 @@ package ru.betterend.entity.model;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
|
|
||||||
import net.minecraft.client.model.ListModel;
|
import net.minecraft.client.model.ListModel;
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.entity.model;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
|
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.entity.render;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
|
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.entity.render;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
|
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.entity.render;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
|
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
|
||||||
|
|
|
@ -2,8 +2,10 @@ package ru.betterend.integration;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import net.minecraft.world.level.ItemLike;
|
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.ItemLike;
|
||||||
import ru.betterend.blocks.HydraluxPetalColoredBlock;
|
import ru.betterend.blocks.HydraluxPetalColoredBlock;
|
||||||
import ru.betterend.blocks.complex.ColoredMaterial;
|
import ru.betterend.blocks.complex.ColoredMaterial;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.integration.byg;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import net.minecraft.data.BuiltinRegistries;
|
import net.minecraft.data.BuiltinRegistries;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.entity.ai.behavior.WeightedList;
|
import net.minecraft.world.entity.ai.behavior.WeightedList;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.integration.byg.biomes;
|
package ru.betterend.integration.byg.biomes;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.world.entity.MobCategory;
|
import net.minecraft.world.entity.MobCategory;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.integration.byg.biomes;
|
package ru.betterend.integration.byg.biomes;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.world.entity.MobCategory;
|
import net.minecraft.world.entity.MobCategory;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.integration.byg.biomes;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.data.BuiltinRegistries;
|
import net.minecraft.data.BuiltinRegistries;
|
||||||
|
|
|
@ -2,14 +2,16 @@ package ru.betterend.integration.byg.features;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import com.google.common.base.Function;
|
||||||
|
import com.mojang.math.Vector3f;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.chunk.ChunkGenerator;
|
import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
||||||
import net.minecraft.world.level.material.Material;
|
import net.minecraft.world.level.material.Material;
|
||||||
import com.google.common.base.Function;
|
|
||||||
import com.mojang.math.Vector3f;
|
|
||||||
import ru.betterend.integration.Integrations;
|
import ru.betterend.integration.Integrations;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
import ru.betterend.util.MHelper;
|
import ru.betterend.util.MHelper;
|
||||||
|
|
|
@ -2,6 +2,11 @@ package ru.betterend.integration.byg.features;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import com.google.common.base.Function;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.mojang.math.Vector3f;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
@ -12,9 +17,6 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.chunk.ChunkGenerator;
|
import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
||||||
import net.minecraft.world.level.material.Material;
|
import net.minecraft.world.level.material.Material;
|
||||||
import com.google.common.base.Function;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import com.mojang.math.Vector3f;
|
|
||||||
import ru.betterend.integration.Integrations;
|
import ru.betterend.integration.Integrations;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
import ru.betterend.util.BlocksHelper;
|
import ru.betterend.util.BlocksHelper;
|
||||||
|
|
|
@ -2,6 +2,11 @@ package ru.betterend.integration.byg.features;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import com.google.common.base.Function;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.mojang.math.Vector3f;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
@ -12,9 +17,6 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.chunk.ChunkGenerator;
|
import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
||||||
import net.minecraft.world.level.material.Material;
|
import net.minecraft.world.level.material.Material;
|
||||||
import com.google.common.base.Function;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import com.mojang.math.Vector3f;
|
|
||||||
import ru.betterend.integration.Integrations;
|
import ru.betterend.integration.Integrations;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
import ru.betterend.util.BlocksHelper;
|
import ru.betterend.util.BlocksHelper;
|
||||||
|
|
|
@ -3,6 +3,10 @@ package ru.betterend.integration.byg.features;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.mojang.math.Vector3f;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
|
@ -12,8 +16,6 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
||||||
import net.minecraft.world.level.material.Material;
|
import net.minecraft.world.level.material.Material;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import com.mojang.math.Vector3f;
|
|
||||||
import ru.betterend.integration.Integrations;
|
import ru.betterend.integration.Integrations;
|
||||||
import ru.betterend.noise.OpenSimplexNoise;
|
import ru.betterend.noise.OpenSimplexNoise;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
|
|
|
@ -1,88 +1,89 @@
|
||||||
package ru.betterend.integration.rei;
|
package ru.betterend.integration.rei;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import it.unimi.dsi.fastutil.ints.IntList;
|
|
||||||
import me.shedaniel.math.Point;
|
import it.unimi.dsi.fastutil.ints.IntList;
|
||||||
import me.shedaniel.math.Rectangle;
|
import me.shedaniel.math.Point;
|
||||||
import me.shedaniel.rei.api.EntryStack;
|
import me.shedaniel.math.Rectangle;
|
||||||
import me.shedaniel.rei.api.TransferRecipeCategory;
|
import me.shedaniel.rei.api.EntryStack;
|
||||||
import me.shedaniel.rei.api.widgets.Widgets;
|
import me.shedaniel.rei.api.TransferRecipeCategory;
|
||||||
import me.shedaniel.rei.gui.entries.RecipeEntry;
|
import me.shedaniel.rei.api.widgets.Widgets;
|
||||||
import me.shedaniel.rei.gui.entries.SimpleRecipeEntry;
|
import me.shedaniel.rei.gui.entries.RecipeEntry;
|
||||||
import me.shedaniel.rei.gui.widget.Widget;
|
import me.shedaniel.rei.gui.entries.SimpleRecipeEntry;
|
||||||
import net.minecraft.client.gui.GuiComponent;
|
import me.shedaniel.rei.gui.widget.Widget;
|
||||||
import net.minecraft.network.chat.TranslatableComponent;
|
import net.minecraft.client.gui.GuiComponent;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.network.chat.TranslatableComponent;
|
||||||
import ru.betterend.recipe.builders.AlloyingRecipe;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.recipe.builders.AlloyingRecipe;
|
||||||
import ru.betterend.util.LangUtil;
|
import ru.betterend.registry.EndBlocks;
|
||||||
|
import ru.betterend.util.LangUtil;
|
||||||
public class REIAlloyingCategory implements TransferRecipeCategory<REIAlloyingDisplay> {
|
|
||||||
|
public class REIAlloyingCategory implements TransferRecipeCategory<REIAlloyingDisplay> {
|
||||||
@Override
|
|
||||||
public @NotNull ResourceLocation getIdentifier() {
|
@Override
|
||||||
return AlloyingRecipe.ID;
|
public @NotNull ResourceLocation getIdentifier() {
|
||||||
}
|
return AlloyingRecipe.ID;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull String getCategoryName() {
|
@Override
|
||||||
return LangUtil.translate(EndBlocks.END_STONE_SMELTER.getDescriptionId());
|
public @NotNull String getCategoryName() {
|
||||||
}
|
return LangUtil.translate(EndBlocks.END_STONE_SMELTER.getDescriptionId());
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull EntryStack getLogo() {
|
@Override
|
||||||
return REIPlugin.END_STONE_SMELTER;
|
public @NotNull EntryStack getLogo() {
|
||||||
}
|
return REIPlugin.END_STONE_SMELTER;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull List<Widget> setupDisplay(REIAlloyingDisplay display, Rectangle bounds) {
|
@Override
|
||||||
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.y + 10);
|
public @NotNull List<Widget> setupDisplay(REIAlloyingDisplay display, Rectangle bounds) {
|
||||||
double smeltTime = display.getSmeltTime();
|
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.y + 10);
|
||||||
DecimalFormat df = new DecimalFormat("###.##");
|
double smeltTime = display.getSmeltTime();
|
||||||
List<Widget> widgets = Lists.newArrayList();
|
DecimalFormat df = new DecimalFormat("###.##");
|
||||||
widgets.add(Widgets.createRecipeBase(bounds));
|
List<Widget> widgets = Lists.newArrayList();
|
||||||
widgets.add(Widgets.createResultSlotBackground(new Point(startPoint.x + 61, startPoint.y + 9)));
|
widgets.add(Widgets.createRecipeBase(bounds));
|
||||||
widgets.add(Widgets.createBurningFire(new Point(startPoint.x - 9, startPoint.y + 20)).animationDurationMS(10000));
|
widgets.add(Widgets.createResultSlotBackground(new Point(startPoint.x + 61, startPoint.y + 9)));
|
||||||
widgets.add(Widgets.createLabel(new Point(bounds.x + bounds.width - 5, bounds.y + 5),
|
widgets.add(Widgets.createBurningFire(new Point(startPoint.x - 9, startPoint.y + 20)).animationDurationMS(10000));
|
||||||
new TranslatableComponent("category.rei.cooking.time&xp", df.format(display.getXp()), df.format(smeltTime / 20D))).noShadow().rightAligned().color(0xFF404040, 0xFFBBBBBB));
|
widgets.add(Widgets.createLabel(new Point(bounds.x + bounds.width - 5, bounds.y + 5),
|
||||||
widgets.add(Widgets.createArrow(new Point(startPoint.x + 24, startPoint.y + 8)).animationDurationTicks(smeltTime));
|
new TranslatableComponent("category.rei.cooking.time&xp", df.format(display.getXp()), df.format(smeltTime / 20D))).noShadow().rightAligned().color(0xFF404040, 0xFFBBBBBB));
|
||||||
List<List<EntryStack>> inputEntries = display.getInputEntries();
|
widgets.add(Widgets.createArrow(new Point(startPoint.x + 24, startPoint.y + 8)).animationDurationTicks(smeltTime));
|
||||||
widgets.add(Widgets.createSlot(new Point(startPoint.x - 20, startPoint.y + 1)).entries(inputEntries.get(0)).markInput());
|
List<List<EntryStack>> inputEntries = display.getInputEntries();
|
||||||
if (inputEntries.size() > 1) {
|
widgets.add(Widgets.createSlot(new Point(startPoint.x - 20, startPoint.y + 1)).entries(inputEntries.get(0)).markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(startPoint.x + 1, startPoint.y + 1)).entries(inputEntries.get(1)).markInput());
|
if (inputEntries.size() > 1) {
|
||||||
} else {
|
widgets.add(Widgets.createSlot(new Point(startPoint.x + 1, startPoint.y + 1)).entries(inputEntries.get(1)).markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(startPoint.x + 1, startPoint.y + 1)).entries(Lists.newArrayList()).markInput());
|
} else {
|
||||||
}
|
widgets.add(Widgets.createSlot(new Point(startPoint.x + 1, startPoint.y + 1)).entries(Lists.newArrayList()).markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(startPoint.x + 61, startPoint.y + 9)).entries(display.getResultingEntries().get(0)).disableBackground().markOutput());
|
}
|
||||||
return widgets;
|
widgets.add(Widgets.createSlot(new Point(startPoint.x + 61, startPoint.y + 9)).entries(display.getResultingEntries().get(0)).disableBackground().markOutput());
|
||||||
}
|
return widgets;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public void renderRedSlots(PoseStack matrices, List<Widget> widgets, Rectangle bounds, REIAlloyingDisplay display,
|
@Override
|
||||||
IntList redSlots) {
|
public void renderRedSlots(PoseStack matrices, List<Widget> widgets, Rectangle bounds, REIAlloyingDisplay display,
|
||||||
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 27);
|
IntList redSlots) {
|
||||||
matrices.pushPose();
|
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 27);
|
||||||
matrices.translate(0, 0, 400);
|
matrices.pushPose();
|
||||||
if (redSlots.contains(0)) {
|
matrices.translate(0, 0, 400);
|
||||||
GuiComponent.fill(matrices, startPoint.x - 20, startPoint.y + 1, startPoint.x - 20 + 16, startPoint.y + 1 + 16, 1090453504);
|
if (redSlots.contains(0)) {
|
||||||
GuiComponent.fill(matrices, startPoint.x + 1, startPoint.y + 1, startPoint.x + 1 + 16, startPoint.y + 1 + 16, 1090453504);
|
GuiComponent.fill(matrices, startPoint.x - 20, startPoint.y + 1, startPoint.x - 20 + 16, startPoint.y + 1 + 16, 1090453504);
|
||||||
}
|
GuiComponent.fill(matrices, startPoint.x + 1, startPoint.y + 1, startPoint.x + 1 + 16, startPoint.y + 1 + 16, 1090453504);
|
||||||
matrices.popPose();
|
}
|
||||||
}
|
matrices.popPose();
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull RecipeEntry getSimpleRenderer(REIAlloyingDisplay recipe) {
|
@Override
|
||||||
return SimpleRecipeEntry.from(recipe.getInputEntries(), recipe.getResultingEntries());
|
public @NotNull RecipeEntry getSimpleRenderer(REIAlloyingDisplay recipe) {
|
||||||
}
|
return SimpleRecipeEntry.from(recipe.getInputEntries(), recipe.getResultingEntries());
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public int getDisplayHeight() {
|
@Override
|
||||||
return 49;
|
public int getDisplayHeight() {
|
||||||
}
|
return 49;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,91 +1,92 @@
|
||||||
package ru.betterend.integration.rei;
|
package ru.betterend.integration.rei;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import me.shedaniel.math.Point;
|
|
||||||
import me.shedaniel.math.Rectangle;
|
import me.shedaniel.math.Point;
|
||||||
import me.shedaniel.rei.api.EntryStack;
|
import me.shedaniel.math.Rectangle;
|
||||||
import me.shedaniel.rei.api.RecipeCategory;
|
import me.shedaniel.rei.api.EntryStack;
|
||||||
import me.shedaniel.rei.api.widgets.Slot;
|
import me.shedaniel.rei.api.RecipeCategory;
|
||||||
import me.shedaniel.rei.api.widgets.Tooltip;
|
import me.shedaniel.rei.api.widgets.Slot;
|
||||||
import me.shedaniel.rei.api.widgets.Widgets;
|
import me.shedaniel.rei.api.widgets.Tooltip;
|
||||||
import me.shedaniel.rei.gui.entries.RecipeEntry;
|
import me.shedaniel.rei.api.widgets.Widgets;
|
||||||
import me.shedaniel.rei.gui.widget.Widget;
|
import me.shedaniel.rei.gui.entries.RecipeEntry;
|
||||||
import net.minecraft.client.Minecraft;
|
import me.shedaniel.rei.gui.widget.Widget;
|
||||||
import net.minecraft.client.resources.language.I18n;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.network.chat.TranslatableComponent;
|
import net.minecraft.client.resources.language.I18n;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.network.chat.TranslatableComponent;
|
||||||
import net.minecraft.world.item.Items;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.world.item.Items;
|
||||||
public class REIAlloyingFuelCategory implements RecipeCategory<REIAlloyingFuelDisplay> {
|
|
||||||
private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("#.##");
|
public class REIAlloyingFuelCategory implements RecipeCategory<REIAlloyingFuelDisplay> {
|
||||||
|
private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("#.##");
|
||||||
@Override
|
|
||||||
public @NotNull ResourceLocation getIdentifier() {
|
@Override
|
||||||
return REIPlugin.ALLOYING_FUEL;
|
public @NotNull ResourceLocation getIdentifier() {
|
||||||
}
|
return REIPlugin.ALLOYING_FUEL;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull String getCategoryName() {
|
@Override
|
||||||
return I18n.get("category.rei.fuel");
|
public @NotNull String getCategoryName() {
|
||||||
}
|
return I18n.get("category.rei.fuel");
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public int getDisplayHeight() {
|
@Override
|
||||||
return 49;
|
public int getDisplayHeight() {
|
||||||
}
|
return 49;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull EntryStack getLogo() {
|
@Override
|
||||||
return EntryStack.create(Items.COAL);
|
public @NotNull EntryStack getLogo() {
|
||||||
}
|
return EntryStack.create(Items.COAL);
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull List<Widget> setupDisplay(REIAlloyingFuelDisplay recipeDisplay, Rectangle bounds) {
|
@Override
|
||||||
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 17);
|
public @NotNull List<Widget> setupDisplay(REIAlloyingFuelDisplay recipeDisplay, Rectangle bounds) {
|
||||||
String burnTime = DECIMAL_FORMAT.format(recipeDisplay.getFuelTime());
|
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 17);
|
||||||
List<Widget> widgets = Lists.newArrayList();
|
String burnTime = DECIMAL_FORMAT.format(recipeDisplay.getFuelTime());
|
||||||
widgets.add(Widgets.createRecipeBase(bounds));
|
List<Widget> widgets = Lists.newArrayList();
|
||||||
widgets.add(Widgets.createLabel(new Point(bounds.x + 26, bounds.getMaxY() - 15), new TranslatableComponent("category.rei.fuel.time", burnTime))
|
widgets.add(Widgets.createRecipeBase(bounds));
|
||||||
.color(0xFF404040, 0xFFBBBBBB).noShadow().leftAligned());
|
widgets.add(Widgets.createLabel(new Point(bounds.x + 26, bounds.getMaxY() - 15), new TranslatableComponent("category.rei.fuel.time", burnTime))
|
||||||
widgets.add(Widgets.createBurningFire(new Point(bounds.x + 6, startPoint.y + 1)).animationDurationTicks(recipeDisplay.getFuelTime()));
|
.color(0xFF404040, 0xFFBBBBBB).noShadow().leftAligned());
|
||||||
widgets.add(Widgets.createSlot(new Point(bounds.x + 6, startPoint.y + 18)).entries(recipeDisplay.getInputEntries().get(0)).markInput());
|
widgets.add(Widgets.createBurningFire(new Point(bounds.x + 6, startPoint.y + 1)).animationDurationTicks(recipeDisplay.getFuelTime()));
|
||||||
return widgets;
|
widgets.add(Widgets.createSlot(new Point(bounds.x + 6, startPoint.y + 18)).entries(recipeDisplay.getInputEntries().get(0)).markInput());
|
||||||
}
|
return widgets;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull RecipeEntry getSimpleRenderer(REIAlloyingFuelDisplay recipe) {
|
@Override
|
||||||
Slot slot = Widgets.createSlot(new Point(0, 0)).entries(recipe.getInputEntries().get(0)).disableBackground().disableHighlight();
|
public @NotNull RecipeEntry getSimpleRenderer(REIAlloyingFuelDisplay recipe) {
|
||||||
String burnItems = DECIMAL_FORMAT.format(recipe.getFuelTime() / 200d);
|
Slot slot = Widgets.createSlot(new Point(0, 0)).entries(recipe.getInputEntries().get(0)).disableBackground().disableHighlight();
|
||||||
return new RecipeEntry() {
|
String burnItems = DECIMAL_FORMAT.format(recipe.getFuelTime() / 200d);
|
||||||
private TranslatableComponent text = new TranslatableComponent("category.rei.fuel.time_short.items", burnItems);
|
return new RecipeEntry() {
|
||||||
|
private TranslatableComponent text = new TranslatableComponent("category.rei.fuel.time_short.items", burnItems);
|
||||||
@Override
|
|
||||||
public int getHeight() {
|
@Override
|
||||||
return 22;
|
public int getHeight() {
|
||||||
}
|
return 22;
|
||||||
|
}
|
||||||
@Nullable
|
|
||||||
@Override
|
@Nullable
|
||||||
public Tooltip getTooltip(Point point) {
|
@Override
|
||||||
if (slot.containsMouse(point))
|
public Tooltip getTooltip(Point point) {
|
||||||
return slot.getCurrentTooltip(point);
|
if (slot.containsMouse(point))
|
||||||
return null;
|
return slot.getCurrentTooltip(point);
|
||||||
}
|
return null;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public void render(PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) {
|
@Override
|
||||||
slot.setZ(getZ() + 50);
|
public void render(PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) {
|
||||||
slot.getBounds().setLocation(bounds.x + 4, bounds.y + 2);
|
slot.setZ(getZ() + 50);
|
||||||
slot.render(matrices, mouseX, mouseY, delta);
|
slot.getBounds().setLocation(bounds.x + 4, bounds.y + 2);
|
||||||
Minecraft.getInstance().font.drawShadow(matrices, text.getVisualOrderText(), bounds.x + 25, bounds.y + 8, -1);
|
slot.render(matrices, mouseX, mouseY, delta);
|
||||||
}
|
Minecraft.getInstance().font.drawShadow(matrices, text.getVisualOrderText(), bounds.x + 25, bounds.y + 8, -1);
|
||||||
};
|
}
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,100 +1,101 @@
|
||||||
package ru.betterend.integration.rei;
|
package ru.betterend.integration.rei;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import it.unimi.dsi.fastutil.ints.IntList;
|
|
||||||
import me.shedaniel.math.Point;
|
import it.unimi.dsi.fastutil.ints.IntList;
|
||||||
import me.shedaniel.math.Rectangle;
|
import me.shedaniel.math.Point;
|
||||||
import me.shedaniel.rei.api.EntryStack;
|
import me.shedaniel.math.Rectangle;
|
||||||
import me.shedaniel.rei.api.TransferRecipeCategory;
|
import me.shedaniel.rei.api.EntryStack;
|
||||||
import me.shedaniel.rei.api.widgets.Widgets;
|
import me.shedaniel.rei.api.TransferRecipeCategory;
|
||||||
import me.shedaniel.rei.gui.entries.RecipeEntry;
|
import me.shedaniel.rei.api.widgets.Widgets;
|
||||||
import me.shedaniel.rei.gui.entries.SimpleRecipeEntry;
|
import me.shedaniel.rei.gui.entries.RecipeEntry;
|
||||||
import me.shedaniel.rei.gui.widget.Widget;
|
import me.shedaniel.rei.gui.entries.SimpleRecipeEntry;
|
||||||
import net.minecraft.client.gui.GuiComponent;
|
import me.shedaniel.rei.gui.widget.Widget;
|
||||||
import net.minecraft.network.chat.TranslatableComponent;
|
import net.minecraft.client.gui.GuiComponent;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.network.chat.TranslatableComponent;
|
||||||
import net.minecraft.world.item.BlockItem;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.item.BlockItem;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Block;
|
||||||
import ru.betterend.blocks.basis.EndAnvilBlock;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
import ru.betterend.util.LangUtil;
|
import ru.betterend.blocks.basis.EndAnvilBlock;
|
||||||
|
import ru.betterend.util.LangUtil;
|
||||||
public class REIAnvilCategory implements TransferRecipeCategory<REIAnvilDisplay> {
|
|
||||||
|
public class REIAnvilCategory implements TransferRecipeCategory<REIAnvilDisplay> {
|
||||||
@Override
|
|
||||||
public @NotNull ResourceLocation getIdentifier() {
|
@Override
|
||||||
return REIPlugin.SMITHING;
|
public @NotNull ResourceLocation getIdentifier() {
|
||||||
}
|
return REIPlugin.SMITHING;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull String getCategoryName() {
|
@Override
|
||||||
return LangUtil.translate(Blocks.ANVIL.getDescriptionId());
|
public @NotNull String getCategoryName() {
|
||||||
}
|
return LangUtil.translate(Blocks.ANVIL.getDescriptionId());
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull EntryStack getLogo() {
|
@Override
|
||||||
return REIPlugin.ANVILS[0];
|
public @NotNull EntryStack getLogo() {
|
||||||
}
|
return REIPlugin.ANVILS[0];
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull List<Widget> setupDisplay(REIAnvilDisplay display, Rectangle bounds) {
|
@Override
|
||||||
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.y + 10);
|
public @NotNull List<Widget> setupDisplay(REIAnvilDisplay display, Rectangle bounds) {
|
||||||
List<Widget> widgets = Lists.newArrayList();
|
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.y + 10);
|
||||||
widgets.add(Widgets.createRecipeBase(bounds));
|
List<Widget> widgets = Lists.newArrayList();
|
||||||
int x = startPoint.x + 10;
|
widgets.add(Widgets.createRecipeBase(bounds));
|
||||||
int y = startPoint.y;
|
int x = startPoint.x + 10;
|
||||||
widgets.add(Widgets.createResultSlotBackground(new Point(x + 61, y + 5)));
|
int y = startPoint.y;
|
||||||
List<List<EntryStack>> inputEntries = display.getInputEntries();
|
widgets.add(Widgets.createResultSlotBackground(new Point(x + 61, y + 5)));
|
||||||
List<EntryStack> materials = inputEntries.get(1);
|
List<List<EntryStack>> inputEntries = display.getInputEntries();
|
||||||
int anvilLevel = display.getAnvilLevel();
|
List<EntryStack> materials = inputEntries.get(1);
|
||||||
List<EntryStack> anvils = Arrays.stream(REIPlugin.ANVILS).filter(anvil -> {
|
int anvilLevel = display.getAnvilLevel();
|
||||||
Block block = ((BlockItem) anvil.getItem()).getBlock();
|
List<EntryStack> anvils = Arrays.stream(REIPlugin.ANVILS).filter(anvil -> {
|
||||||
if (block instanceof EndAnvilBlock) {
|
Block block = ((BlockItem) anvil.getItem()).getBlock();
|
||||||
return ((EndAnvilBlock) block).getCraftingLevel() >= anvilLevel;
|
if (block instanceof EndAnvilBlock) {
|
||||||
}
|
return ((EndAnvilBlock) block).getCraftingLevel() >= anvilLevel;
|
||||||
return anvilLevel == 1;
|
}
|
||||||
}).collect(Collectors.toList());
|
return anvilLevel == 1;
|
||||||
materials.forEach(entryStack -> entryStack.setAmount(display.getInputCount()));
|
}).collect(Collectors.toList());
|
||||||
widgets.add(Widgets.createArrow(new Point(x + 24, y + 4)));
|
materials.forEach(entryStack -> entryStack.setAmount(display.getInputCount()));
|
||||||
widgets.add(Widgets.createLabel(new Point(bounds.x + bounds.width - 7, bounds.y + bounds.height - 15),
|
widgets.add(Widgets.createArrow(new Point(x + 24, y + 4)));
|
||||||
new TranslatableComponent("category.rei.damage.amount&dmg", display.getDamage())).noShadow().rightAligned().color(0xFF404040, 0xFFBBBBBB));
|
widgets.add(Widgets.createLabel(new Point(bounds.x + bounds.width - 7, bounds.y + bounds.height - 15),
|
||||||
widgets.add(Widgets.createSlot(new Point(x - 20, y + 4)).entries(materials).markInput());
|
new TranslatableComponent("category.rei.damage.amount&dmg", display.getDamage())).noShadow().rightAligned().color(0xFF404040, 0xFFBBBBBB));
|
||||||
widgets.add(Widgets.createSlot(new Point(x + 1, y + 4)).entries(inputEntries.get(0)).markInput());
|
widgets.add(Widgets.createSlot(new Point(x - 20, y + 4)).entries(materials).markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(x + 61, y + 5)).entries(display.getResultingEntries().get(0)).disableBackground().markOutput());
|
widgets.add(Widgets.createSlot(new Point(x + 1, y + 4)).entries(inputEntries.get(0)).markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(x - 9, y + 25)).entries(anvils));
|
widgets.add(Widgets.createSlot(new Point(x + 61, y + 5)).entries(display.getResultingEntries().get(0)).disableBackground().markOutput());
|
||||||
|
widgets.add(Widgets.createSlot(new Point(x - 9, y + 25)).entries(anvils));
|
||||||
return widgets;
|
|
||||||
}
|
return widgets;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public void renderRedSlots(PoseStack matrices, List<Widget> widgets, Rectangle bounds, REIAnvilDisplay display,
|
@Override
|
||||||
IntList redSlots) {
|
public void renderRedSlots(PoseStack matrices, List<Widget> widgets, Rectangle bounds, REIAnvilDisplay display,
|
||||||
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 27);
|
IntList redSlots) {
|
||||||
matrices.pushPose();
|
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 27);
|
||||||
matrices.translate(0, 0, 400);
|
matrices.pushPose();
|
||||||
if (redSlots.contains(0)) {
|
matrices.translate(0, 0, 400);
|
||||||
GuiComponent.fill(matrices, startPoint.x - 20, startPoint.y + 3, startPoint.x - 20 + 16, startPoint.y + 3 + 16, 1090453504);
|
if (redSlots.contains(0)) {
|
||||||
GuiComponent.fill(matrices, startPoint.x + 1, startPoint.y + 3, startPoint.x + 1 + 16, startPoint.y + 3 + 16, 1090453504);
|
GuiComponent.fill(matrices, startPoint.x - 20, startPoint.y + 3, startPoint.x - 20 + 16, startPoint.y + 3 + 16, 1090453504);
|
||||||
}
|
GuiComponent.fill(matrices, startPoint.x + 1, startPoint.y + 3, startPoint.x + 1 + 16, startPoint.y + 3 + 16, 1090453504);
|
||||||
matrices.popPose();
|
}
|
||||||
}
|
matrices.popPose();
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull RecipeEntry getSimpleRenderer(REIAnvilDisplay recipe) {
|
@Override
|
||||||
return SimpleRecipeEntry.from(Collections.singletonList(recipe.getInputEntries().get(0)), recipe.getResultingEntries());
|
public @NotNull RecipeEntry getSimpleRenderer(REIAnvilDisplay recipe) {
|
||||||
}
|
return SimpleRecipeEntry.from(Collections.singletonList(recipe.getInputEntries().get(0)), recipe.getResultingEntries());
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public int getDisplayHeight() {
|
@Override
|
||||||
return 60;
|
public int getDisplayHeight() {
|
||||||
}
|
return 60;
|
||||||
|
}
|
||||||
}
|
|
||||||
|
}
|
||||||
|
|
|
@ -1,80 +1,81 @@
|
||||||
package ru.betterend.integration.rei;
|
package ru.betterend.integration.rei;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import it.unimi.dsi.fastutil.ints.IntList;
|
|
||||||
import me.shedaniel.math.Point;
|
import it.unimi.dsi.fastutil.ints.IntList;
|
||||||
import me.shedaniel.math.Rectangle;
|
import me.shedaniel.math.Point;
|
||||||
import me.shedaniel.rei.api.EntryStack;
|
import me.shedaniel.math.Rectangle;
|
||||||
import me.shedaniel.rei.api.TransferRecipeCategory;
|
import me.shedaniel.rei.api.EntryStack;
|
||||||
import me.shedaniel.rei.api.widgets.Widgets;
|
import me.shedaniel.rei.api.TransferRecipeCategory;
|
||||||
import me.shedaniel.rei.gui.entries.RecipeEntry;
|
import me.shedaniel.rei.api.widgets.Widgets;
|
||||||
import me.shedaniel.rei.gui.entries.SimpleRecipeEntry;
|
import me.shedaniel.rei.gui.entries.RecipeEntry;
|
||||||
import me.shedaniel.rei.gui.widget.Widget;
|
import me.shedaniel.rei.gui.entries.SimpleRecipeEntry;
|
||||||
import net.minecraft.network.chat.TranslatableComponent;
|
import me.shedaniel.rei.gui.widget.Widget;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.network.chat.TranslatableComponent;
|
||||||
import ru.betterend.BetterEnd;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import ru.betterend.recipe.builders.InfusionRecipe;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.recipe.builders.InfusionRecipe;
|
||||||
import ru.betterend.util.LangUtil;
|
import ru.betterend.registry.EndBlocks;
|
||||||
|
import ru.betterend.util.LangUtil;
|
||||||
public class REIInfusionCategory implements TransferRecipeCategory<REIInfusionDisplay> {
|
|
||||||
|
public class REIInfusionCategory implements TransferRecipeCategory<REIInfusionDisplay> {
|
||||||
private final static ResourceLocation BACKGROUND = BetterEnd.makeID("textures/gui/rei_infusion.png");
|
|
||||||
|
private final static ResourceLocation BACKGROUND = BetterEnd.makeID("textures/gui/rei_infusion.png");
|
||||||
@Override
|
|
||||||
public @NotNull ResourceLocation getIdentifier() {
|
@Override
|
||||||
return InfusionRecipe.ID;
|
public @NotNull ResourceLocation getIdentifier() {
|
||||||
}
|
return InfusionRecipe.ID;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull String getCategoryName() {
|
@Override
|
||||||
return LangUtil.translate(EndBlocks.INFUSION_PEDESTAL.getDescriptionId());
|
public @NotNull String getCategoryName() {
|
||||||
}
|
return LangUtil.translate(EndBlocks.INFUSION_PEDESTAL.getDescriptionId());
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull EntryStack getLogo() {
|
@Override
|
||||||
return REIPlugin.INFUSION_RITUAL;
|
public @NotNull EntryStack getLogo() {
|
||||||
}
|
return REIPlugin.INFUSION_RITUAL;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull RecipeEntry getSimpleRenderer(REIInfusionDisplay recipe) {
|
@Override
|
||||||
return SimpleRecipeEntry.from(recipe.getInputEntries(), recipe.getResultingEntries());
|
public @NotNull RecipeEntry getSimpleRenderer(REIInfusionDisplay recipe) {
|
||||||
}
|
return SimpleRecipeEntry.from(recipe.getInputEntries(), recipe.getResultingEntries());
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public @NotNull List<Widget> setupDisplay(REIInfusionDisplay display, Rectangle bounds) {
|
@Override
|
||||||
Point centerPoint = new Point(bounds.getCenterX() - 34, bounds.getCenterY() - 2);
|
public @NotNull List<Widget> setupDisplay(REIInfusionDisplay display, Rectangle bounds) {
|
||||||
List<Widget> widgets = Lists.newArrayList();
|
Point centerPoint = new Point(bounds.getCenterX() - 34, bounds.getCenterY() - 2);
|
||||||
widgets.add(Widgets.createRecipeBase(bounds));
|
List<Widget> widgets = Lists.newArrayList();
|
||||||
List<List<EntryStack>> inputEntries = display.getInputEntries();
|
widgets.add(Widgets.createRecipeBase(bounds));
|
||||||
List<List<EntryStack>> outputEntries = display.getResultingEntries();
|
List<List<EntryStack>> inputEntries = display.getInputEntries();
|
||||||
widgets.add(Widgets.createTexturedWidget(BACKGROUND, bounds.x, bounds.y, 0, 0, 150, 104, 150, 104));
|
List<List<EntryStack>> outputEntries = display.getResultingEntries();
|
||||||
widgets.add(Widgets.createSlot(centerPoint).entries(inputEntries.get(0)).disableBackground().markInput());
|
widgets.add(Widgets.createTexturedWidget(BACKGROUND, bounds.x, bounds.y, 0, 0, 150, 104, 150, 104));
|
||||||
widgets.add(Widgets.createSlot(new Point(centerPoint.x, centerPoint.y - 28)).entries(inputEntries.get(1)).disableBackground().markInput());
|
widgets.add(Widgets.createSlot(centerPoint).entries(inputEntries.get(0)).disableBackground().markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(centerPoint.x + 28, centerPoint.y)).entries(inputEntries.get(3)).disableBackground().markInput());
|
widgets.add(Widgets.createSlot(new Point(centerPoint.x, centerPoint.y - 28)).entries(inputEntries.get(1)).disableBackground().markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(centerPoint.x, centerPoint.y + 28)).entries(inputEntries.get(5)).disableBackground().markInput());
|
widgets.add(Widgets.createSlot(new Point(centerPoint.x + 28, centerPoint.y)).entries(inputEntries.get(3)).disableBackground().markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(centerPoint.x - 28, centerPoint.y)).entries(inputEntries.get(7)).disableBackground().markInput());
|
widgets.add(Widgets.createSlot(new Point(centerPoint.x, centerPoint.y + 28)).entries(inputEntries.get(5)).disableBackground().markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(centerPoint.x + 24, centerPoint.y - 24)).entries(inputEntries.get(2)).disableBackground().markInput());
|
widgets.add(Widgets.createSlot(new Point(centerPoint.x - 28, centerPoint.y)).entries(inputEntries.get(7)).disableBackground().markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(centerPoint.x + 24, centerPoint.y + 24)).entries(inputEntries.get(4)).disableBackground().markInput());
|
widgets.add(Widgets.createSlot(new Point(centerPoint.x + 24, centerPoint.y - 24)).entries(inputEntries.get(2)).disableBackground().markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(centerPoint.x - 24, centerPoint.y + 24)).entries(inputEntries.get(6)).disableBackground().markInput());
|
widgets.add(Widgets.createSlot(new Point(centerPoint.x + 24, centerPoint.y + 24)).entries(inputEntries.get(4)).disableBackground().markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(centerPoint.x - 24, centerPoint.y - 24)).entries(inputEntries.get(8)).disableBackground().markInput());
|
widgets.add(Widgets.createSlot(new Point(centerPoint.x - 24, centerPoint.y + 24)).entries(inputEntries.get(6)).disableBackground().markInput());
|
||||||
widgets.add(Widgets.createSlot(new Point(centerPoint.x + 80, centerPoint.y)).entries(outputEntries.get(0)).disableBackground().markOutput());
|
widgets.add(Widgets.createSlot(new Point(centerPoint.x - 24, centerPoint.y - 24)).entries(inputEntries.get(8)).disableBackground().markInput());
|
||||||
widgets.add(Widgets.createLabel(new Point(bounds.getMaxX() - 5, bounds.y + 6), new TranslatableComponent("category.rei.infusion.time&val", display.getInfusionTime()))
|
widgets.add(Widgets.createSlot(new Point(centerPoint.x + 80, centerPoint.y)).entries(outputEntries.get(0)).disableBackground().markOutput());
|
||||||
.noShadow().rightAligned().color(0xFF404040, 0xFFBBBBBB));
|
widgets.add(Widgets.createLabel(new Point(bounds.getMaxX() - 5, bounds.y + 6), new TranslatableComponent("category.rei.infusion.time&val", display.getInfusionTime()))
|
||||||
return widgets;
|
.noShadow().rightAligned().color(0xFF404040, 0xFFBBBBBB));
|
||||||
}
|
return widgets;
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public void renderRedSlots(PoseStack matrices, List<Widget> widgets, Rectangle bounds,
|
@Override
|
||||||
REIInfusionDisplay display, IntList redSlots) {}
|
public void renderRedSlots(PoseStack matrices, List<Widget> widgets, Rectangle bounds,
|
||||||
|
REIInfusionDisplay display, IntList redSlots) {}
|
||||||
@Override
|
|
||||||
public int getDisplayHeight() {
|
@Override
|
||||||
return 104;
|
public int getDisplayHeight() {
|
||||||
}
|
return 104;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.interfaces;
|
package ru.betterend.interfaces;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
package ru.betterend.item;
|
package ru.betterend.item;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMultimap;
|
||||||
|
import com.google.common.collect.Multimap;
|
||||||
|
|
||||||
import net.minecraft.world.entity.EquipmentSlot;
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
import net.minecraft.world.entity.ai.attributes.Attribute;
|
import net.minecraft.world.entity.ai.attributes.Attribute;
|
||||||
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||||
|
@ -8,8 +12,6 @@ import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||||
import net.minecraft.world.item.ArmorItem;
|
import net.minecraft.world.item.ArmorItem;
|
||||||
import net.minecraft.world.item.ArmorMaterial;
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import com.google.common.collect.ImmutableMultimap;
|
|
||||||
import com.google.common.collect.Multimap;
|
|
||||||
import ru.betterend.mixin.common.ArmorItemAccessor;
|
import ru.betterend.mixin.common.ArmorItemAccessor;
|
||||||
import ru.betterend.patterns.Patterned;
|
import ru.betterend.patterns.Patterned;
|
||||||
import ru.betterend.patterns.Patterns;
|
import ru.betterend.patterns.Patterns;
|
||||||
|
|
18
src/main/java/ru/betterend/item/EndBucketItem.java
Normal file
18
src/main/java/ru/betterend/item/EndBucketItem.java
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
package ru.betterend.item;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.BucketItem;
|
||||||
|
import net.minecraft.world.level.material.Fluids;
|
||||||
|
import ru.betterend.patterns.Patterned;
|
||||||
|
import ru.betterend.patterns.Patterns;
|
||||||
|
import ru.betterend.registry.EndItems;
|
||||||
|
|
||||||
|
public class EndBucketItem extends BucketItem implements Patterned {
|
||||||
|
public EndBucketItem() {
|
||||||
|
super(Fluids.WATER, EndItems.makeItemSettings().stacksTo(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getModelPattern(String name) {
|
||||||
|
return Patterns.createJson(Patterns.ITEM_GENERATED, name);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,43 +1,44 @@
|
||||||
package ru.betterend.item;
|
package ru.betterend.item;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import net.minecraft.ChatFormatting;
|
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.InteractionResultHolder;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.InteractionResultHolder;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.TooltipFlag;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
import ru.betterend.BetterEnd;
|
import net.minecraft.world.level.Level;
|
||||||
import ru.betterend.registry.EndItems;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.util.LangUtil;
|
import ru.betterend.registry.EndItems;
|
||||||
import vazkii.patchouli.api.PatchouliAPI;
|
import ru.betterend.util.LangUtil;
|
||||||
|
import vazkii.patchouli.api.PatchouliAPI;
|
||||||
public class GuideBookItem extends PatternedItem {
|
|
||||||
public final static ResourceLocation BOOK_ID = BetterEnd.makeID("guidebook");
|
public class GuideBookItem extends PatternedItem {
|
||||||
public static final Item GUIDE_BOOK = EndItems.registerItem(BOOK_ID, new GuideBookItem());
|
public final static ResourceLocation BOOK_ID = BetterEnd.makeID("guidebook");
|
||||||
|
public static final Item GUIDE_BOOK = EndItems.registerItem(BOOK_ID, new GuideBookItem());
|
||||||
public static void register() {}
|
|
||||||
|
public static void register() {}
|
||||||
public GuideBookItem() {
|
|
||||||
super(EndItems.makeItemSettings().stacksTo(1));
|
public GuideBookItem() {
|
||||||
}
|
super(EndItems.makeItemSettings().stacksTo(1));
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public InteractionResultHolder<ItemStack> use(Level world, Player user, InteractionHand hand) {
|
@Override
|
||||||
if (!world.isClientSide && user instanceof ServerPlayer) {
|
public InteractionResultHolder<ItemStack> use(Level world, Player user, InteractionHand hand) {
|
||||||
PatchouliAPI.get().openBookGUI((ServerPlayer) user, BOOK_ID);
|
if (!world.isClientSide && user instanceof ServerPlayer) {
|
||||||
return InteractionResultHolder.success(user.getItemInHand(hand));
|
PatchouliAPI.get().openBookGUI((ServerPlayer) user, BOOK_ID);
|
||||||
}
|
return InteractionResultHolder.success(user.getItemInHand(hand));
|
||||||
return InteractionResultHolder.consume(user.getItemInHand(hand));
|
}
|
||||||
}
|
return InteractionResultHolder.consume(user.getItemInHand(hand));
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public void appendHoverText(ItemStack stack, Level world, List<Component> tooltip, TooltipFlag context) {
|
@Override
|
||||||
tooltip.add(LangUtil.getText("book.betterend", "subtitle").withStyle(ChatFormatting.DARK_PURPLE, ChatFormatting.ITALIC));
|
public void appendHoverText(ItemStack stack, Level world, List<Component> tooltip, TooltipFlag context) {
|
||||||
}
|
tooltip.add(LangUtil.getText("book.betterend", "subtitle").withStyle(ChatFormatting.DARK_PURPLE, ChatFormatting.ITALIC));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.item.material;
|
package ru.betterend.item.material;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import net.minecraft.util.LazyLoadedValue;
|
import net.minecraft.util.LazyLoadedValue;
|
||||||
import net.minecraft.world.item.Tier;
|
import net.minecraft.world.item.Tier;
|
||||||
import net.minecraft.world.item.crafting.Ingredient;
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
|
|
@ -1,41 +1,43 @@
|
||||||
package ru.betterend.item.model;
|
package ru.betterend.item.model;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import net.minecraft.client.model.HumanoidModel;
|
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
import com.google.common.collect.Lists;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
import com.google.common.collect.Lists;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
public class CrystaliteBootsModel extends HumanoidModel<LivingEntity> {
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
|
||||||
public ModelPart leftBoot;
|
public class CrystaliteBootsModel extends HumanoidModel<LivingEntity> {
|
||||||
public ModelPart rightBoot;
|
|
||||||
|
public ModelPart leftBoot;
|
||||||
public CrystaliteBootsModel(float scale) {
|
public ModelPart rightBoot;
|
||||||
super(RenderType::entityTranslucent, scale, 0.0F, 64, 48);
|
|
||||||
this.leftBoot = new ModelPart(this, 0, 32);
|
public CrystaliteBootsModel(float scale) {
|
||||||
this.leftBoot.addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale + 0.25F);
|
super(RenderType::entityTranslucent, scale, 0.0F, 64, 48);
|
||||||
this.leftBoot.setPos(1.9F, 12.0F, 0.0F);
|
this.leftBoot = new ModelPart(this, 0, 32);
|
||||||
this.rightBoot = new ModelPart(this, 0, 16);
|
this.leftBoot.addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale + 0.25F);
|
||||||
this.rightBoot.addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale + 0.25F);
|
this.leftBoot.setPos(1.9F, 12.0F, 0.0F);
|
||||||
this.rightBoot.setPos(-1.9F, 12.0F, 0.0F);
|
this.rightBoot = new ModelPart(this, 0, 16);
|
||||||
}
|
this.rightBoot.addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale + 0.25F);
|
||||||
|
this.rightBoot.setPos(-1.9F, 12.0F, 0.0F);
|
||||||
@Override
|
}
|
||||||
public void copyPropertiesTo(HumanoidModel<LivingEntity> bipedEntityModel) {
|
|
||||||
super.copyPropertiesTo(bipedEntityModel);
|
@Override
|
||||||
this.leftBoot.copyFrom(leftLeg);
|
public void copyPropertiesTo(HumanoidModel<LivingEntity> bipedEntityModel) {
|
||||||
this.rightBoot.copyFrom(rightLeg);
|
super.copyPropertiesTo(bipedEntityModel);
|
||||||
}
|
this.leftBoot.copyFrom(leftLeg);
|
||||||
|
this.rightBoot.copyFrom(rightLeg);
|
||||||
@Override
|
}
|
||||||
protected Iterable<ModelPart> headParts() {
|
|
||||||
return Collections::emptyIterator;
|
@Override
|
||||||
}
|
protected Iterable<ModelPart> headParts() {
|
||||||
|
return Collections::emptyIterator;
|
||||||
@Override
|
}
|
||||||
protected Iterable<ModelPart> bodyParts() {
|
|
||||||
return Lists.newArrayList(leftBoot, rightBoot);
|
@Override
|
||||||
}
|
protected Iterable<ModelPart> bodyParts() {
|
||||||
}
|
return Lists.newArrayList(leftBoot, rightBoot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,72 +1,74 @@
|
||||||
package ru.betterend.item.model;
|
package ru.betterend.item.model;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import net.minecraft.client.model.HumanoidModel;
|
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
import com.google.common.collect.Lists;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import net.minecraft.world.entity.HumanoidArm;
|
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
import com.google.common.collect.Lists;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.world.entity.HumanoidArm;
|
||||||
public class CrystaliteChestplateModel extends HumanoidModel<LivingEntity> {
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
|
||||||
public ModelPart leftShoulder;
|
public class CrystaliteChestplateModel extends HumanoidModel<LivingEntity> {
|
||||||
public ModelPart rightShoulder;
|
|
||||||
private boolean thinArms;
|
public ModelPart leftShoulder;
|
||||||
|
public ModelPart rightShoulder;
|
||||||
public CrystaliteChestplateModel(float scale, boolean thinArms) {
|
private boolean thinArms;
|
||||||
super(RenderType::entityTranslucent, scale, 0.0F, 64, 48);
|
|
||||||
this.thinArms = thinArms;
|
public CrystaliteChestplateModel(float scale, boolean thinArms) {
|
||||||
this.body = new ModelPart(this, 16, 16);
|
super(RenderType::entityTranslucent, scale, 0.0F, 64, 48);
|
||||||
this.body.addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, scale + 0.25F);
|
this.thinArms = thinArms;
|
||||||
this.body.setPos(0.0F, 0.0F, 0.0F);
|
this.body = new ModelPart(this, 16, 16);
|
||||||
if (thinArms) {
|
this.body.addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, scale + 0.25F);
|
||||||
this.leftShoulder = new ModelPart(this, 41, 32);
|
this.body.setPos(0.0F, 0.0F, 0.0F);
|
||||||
this.leftShoulder.addBox(-1.0F, -2.5F, -2.0F, 3.0F, 12.0F, 4.0F, scale + 0.35F);
|
if (thinArms) {
|
||||||
this.leftShoulder.setPos(5.0F, 2.5F, 0.0F);
|
this.leftShoulder = new ModelPart(this, 41, 32);
|
||||||
this.leftShoulder.mirror = true;
|
this.leftShoulder.addBox(-1.0F, -2.5F, -2.0F, 3.0F, 12.0F, 4.0F, scale + 0.35F);
|
||||||
this.rightShoulder = new ModelPart(this, 41, 16);
|
this.leftShoulder.setPos(5.0F, 2.5F, 0.0F);
|
||||||
this.rightShoulder.addBox(-2.0F, -2.5F, -2.0F, 3.0F, 12.0F, 4.0F, scale + 0.35F);
|
this.leftShoulder.mirror = true;
|
||||||
this.rightShoulder.setPos(-5.0F, 2.5F, 10.0F);
|
this.rightShoulder = new ModelPart(this, 41, 16);
|
||||||
} else {
|
this.rightShoulder.addBox(-2.0F, -2.5F, -2.0F, 3.0F, 12.0F, 4.0F, scale + 0.35F);
|
||||||
this.leftShoulder = new ModelPart(this, 40, 32);
|
this.rightShoulder.setPos(-5.0F, 2.5F, 10.0F);
|
||||||
this.leftShoulder.addBox(-1.0F, -2.5F, -2.0F, 4.0F, 12.0F, 4.0F, scale + 0.45F);
|
} else {
|
||||||
this.leftShoulder.setPos(5.0F, 2.0F, 0.0F);
|
this.leftShoulder = new ModelPart(this, 40, 32);
|
||||||
this.leftShoulder.mirror = true;
|
this.leftShoulder.addBox(-1.0F, -2.5F, -2.0F, 4.0F, 12.0F, 4.0F, scale + 0.45F);
|
||||||
this.rightShoulder = new ModelPart(this, 40, 16);
|
this.leftShoulder.setPos(5.0F, 2.0F, 0.0F);
|
||||||
this.rightShoulder.addBox(-3.0F, -2.5F, -2.0F, 4.0F, 12.0F, 4.0F, scale + 0.45F);
|
this.leftShoulder.mirror = true;
|
||||||
this.rightShoulder.setPos(-5.0F, 2.0F, 10.0F);
|
this.rightShoulder = new ModelPart(this, 40, 16);
|
||||||
}
|
this.rightShoulder.addBox(-3.0F, -2.5F, -2.0F, 4.0F, 12.0F, 4.0F, scale + 0.45F);
|
||||||
}
|
this.rightShoulder.setPos(-5.0F, 2.0F, 10.0F);
|
||||||
|
}
|
||||||
@Override
|
}
|
||||||
public void copyPropertiesTo(HumanoidModel<LivingEntity> bipedEntityModel) {
|
|
||||||
super.copyPropertiesTo(bipedEntityModel);
|
@Override
|
||||||
this.leftShoulder.copyFrom(leftArm);
|
public void copyPropertiesTo(HumanoidModel<LivingEntity> bipedEntityModel) {
|
||||||
this.rightShoulder.copyFrom(rightArm);
|
super.copyPropertiesTo(bipedEntityModel);
|
||||||
}
|
this.leftShoulder.copyFrom(leftArm);
|
||||||
|
this.rightShoulder.copyFrom(rightArm);
|
||||||
@Override
|
}
|
||||||
protected Iterable<ModelPart> headParts() {
|
|
||||||
return Collections::emptyIterator;
|
@Override
|
||||||
}
|
protected Iterable<ModelPart> headParts() {
|
||||||
|
return Collections::emptyIterator;
|
||||||
@Override
|
}
|
||||||
protected Iterable<ModelPart> bodyParts() {
|
|
||||||
return Lists.newArrayList(body, leftShoulder, rightShoulder);
|
@Override
|
||||||
}
|
protected Iterable<ModelPart> bodyParts() {
|
||||||
|
return Lists.newArrayList(body, leftShoulder, rightShoulder);
|
||||||
@Override
|
}
|
||||||
public void translateToHand(HumanoidArm arm, PoseStack matrices) {
|
|
||||||
ModelPart modelPart = this.getArm(arm);
|
@Override
|
||||||
if (this.thinArms) {
|
public void translateToHand(HumanoidArm arm, PoseStack matrices) {
|
||||||
float f = 0.5F * (float)(arm == HumanoidArm.RIGHT ? 1 : -1);
|
ModelPart modelPart = this.getArm(arm);
|
||||||
modelPart.x += f;
|
if (this.thinArms) {
|
||||||
modelPart.translateAndRotate(matrices);
|
float f = 0.5F * (float)(arm == HumanoidArm.RIGHT ? 1 : -1);
|
||||||
modelPart.x -= f;
|
modelPart.x += f;
|
||||||
} else {
|
modelPart.translateAndRotate(matrices);
|
||||||
modelPart.translateAndRotate(matrices);
|
modelPart.x -= f;
|
||||||
}
|
} else {
|
||||||
}
|
modelPart.translateAndRotate(matrices);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,34 +1,36 @@
|
||||||
package ru.betterend.item.model;
|
package ru.betterend.item.model;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import net.minecraft.client.model.HumanoidModel;
|
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
import com.google.common.collect.Lists;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
import com.google.common.collect.Lists;
|
import net.minecraft.client.model.geom.ModelPart;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
public class CrystaliteLeggingsModel extends HumanoidModel<LivingEntity> {
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
|
||||||
public CrystaliteLeggingsModel(float scale) {
|
public class CrystaliteLeggingsModel extends HumanoidModel<LivingEntity> {
|
||||||
super(RenderType::entityTranslucent, scale, 0.0F, 64, 48);
|
|
||||||
this.body = new ModelPart(this, 16, 16);
|
public CrystaliteLeggingsModel(float scale) {
|
||||||
this.body.addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, scale);
|
super(RenderType::entityTranslucent, scale, 0.0F, 64, 48);
|
||||||
this.body.setPos(0.0F, 0.0F, 0.0F);
|
this.body = new ModelPart(this, 16, 16);
|
||||||
this.leftLeg = new ModelPart(this, 0, 32);
|
this.body.addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, scale);
|
||||||
this.leftLeg.addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale);
|
this.body.setPos(0.0F, 0.0F, 0.0F);
|
||||||
this.leftLeg.setPos(1.9F, 12.0F, 0.0F);
|
this.leftLeg = new ModelPart(this, 0, 32);
|
||||||
this.rightLeg = new ModelPart(this, 0, 16);
|
this.leftLeg.addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale);
|
||||||
this.rightLeg.addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale);
|
this.leftLeg.setPos(1.9F, 12.0F, 0.0F);
|
||||||
this.rightLeg.setPos(-1.9F, 12.0F, 0.0F);
|
this.rightLeg = new ModelPart(this, 0, 16);
|
||||||
}
|
this.rightLeg.addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, scale);
|
||||||
|
this.rightLeg.setPos(-1.9F, 12.0F, 0.0F);
|
||||||
@Override
|
}
|
||||||
protected Iterable<ModelPart> headParts() {
|
|
||||||
return Collections::emptyIterator;
|
@Override
|
||||||
}
|
protected Iterable<ModelPart> headParts() {
|
||||||
|
return Collections::emptyIterator;
|
||||||
@Override
|
}
|
||||||
protected Iterable<ModelPart> bodyParts() {
|
|
||||||
return Lists.newArrayList(body, rightLeg, leftLeg);
|
@Override
|
||||||
}
|
protected Iterable<ModelPart> bodyParts() {
|
||||||
}
|
return Lists.newArrayList(body, rightLeg, leftLeg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
package ru.betterend.mixin.client;
|
package ru.betterend.mixin.client;
|
||||||
|
|
||||||
import net.minecraft.client.resources.sounds.AbstractSoundInstance;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
import net.minecraft.client.resources.sounds.AbstractSoundInstance;
|
||||||
|
|
||||||
@Mixin(AbstractSoundInstance.class)
|
@Mixin(AbstractSoundInstance.class)
|
||||||
public interface AbstractSoundInstanceAccessor {
|
public interface AbstractSoundInstanceAccessor {
|
||||||
@Accessor("volume")
|
@Accessor("volume")
|
||||||
|
|
|
@ -1,6 +1,16 @@
|
||||||
package ru.betterend.mixin.client;
|
package ru.betterend.mixin.client;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
import net.minecraft.client.gui.components.AbstractWidget;
|
import net.minecraft.client.gui.components.AbstractWidget;
|
||||||
import net.minecraft.client.gui.components.Button;
|
import net.minecraft.client.gui.components.Button;
|
||||||
import net.minecraft.client.gui.components.EditBox;
|
import net.minecraft.client.gui.components.EditBox;
|
||||||
|
@ -13,14 +23,6 @@ import net.minecraft.world.entity.player.Inventory;
|
||||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||||
import net.minecraft.world.inventory.AnvilMenu;
|
import net.minecraft.world.inventory.AnvilMenu;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
|
||||||
import ru.betterend.interfaces.AnvilScreenHandlerExtended;
|
import ru.betterend.interfaces.AnvilScreenHandlerExtended;
|
||||||
|
|
||||||
@Mixin(AnvilScreen.class)
|
@Mixin(AnvilScreen.class)
|
||||||
|
|
|
@ -8,6 +8,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import com.mojang.blaze3d.platform.GlStateManager;
|
import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
|
||||||
import net.minecraft.Util;
|
import net.minecraft.Util;
|
||||||
import net.minecraft.client.Camera;
|
import net.minecraft.client.Camera;
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
|
|
|
@ -1,16 +1,17 @@
|
||||||
package ru.betterend.mixin.client;
|
package ru.betterend.mixin.client;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
import net.minecraft.client.multiplayer.ClientPacketListener;
|
import net.minecraft.client.multiplayer.ClientPacketListener;
|
||||||
import net.minecraft.network.protocol.PacketUtils;
|
import net.minecraft.network.protocol.PacketUtils;
|
||||||
import net.minecraft.network.protocol.game.ClientboundOpenSignEditorPacket;
|
import net.minecraft.network.protocol.game.ClientboundOpenSignEditorPacket;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import ru.betterend.blocks.entities.ESignBlockEntity;
|
import ru.betterend.blocks.entities.ESignBlockEntity;
|
||||||
import ru.betterend.client.gui.BlockSignEditScreen;
|
import ru.betterend.client.gui.BlockSignEditScreen;
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
package ru.betterend.mixin.client;
|
package ru.betterend.mixin.client;
|
||||||
|
|
||||||
import net.minecraft.client.ClientRecipeBook;
|
|
||||||
import net.minecraft.client.RecipeBookCategories;
|
|
||||||
import net.minecraft.world.item.crafting.Recipe;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
import net.minecraft.client.ClientRecipeBook;
|
||||||
|
import net.minecraft.client.RecipeBookCategories;
|
||||||
|
import net.minecraft.world.item.crafting.Recipe;
|
||||||
import ru.betterend.interfaces.BetterEndRecipe;
|
import ru.betterend.interfaces.BetterEndRecipe;
|
||||||
import ru.betterend.recipe.builders.AlloyingRecipe;
|
|
||||||
|
|
||||||
@Mixin(ClientRecipeBook.class)
|
@Mixin(ClientRecipeBook.class)
|
||||||
public abstract class ClientRecipeBookMixin {
|
public abstract class ClientRecipeBookMixin {
|
||||||
|
|
|
@ -4,6 +4,7 @@ import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.block.model.BlockModelDefinition;
|
import net.minecraft.client.renderer.block.model.BlockModelDefinition;
|
||||||
|
|
||||||
@Mixin(BlockModelDefinition.Context.class)
|
@Mixin(BlockModelDefinition.Context.class)
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
package ru.betterend.mixin.client;
|
package ru.betterend.mixin.client;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.EnchantmentTableBlock;
|
import net.minecraft.world.level.block.EnchantmentTableBlock;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
|
|
||||||
@Mixin(EnchantmentTableBlock.class)
|
@Mixin(EnchantmentTableBlock.class)
|
||||||
|
|
|
@ -7,6 +7,7 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.color.block.BlockColors;
|
import net.minecraft.client.color.block.BlockColors;
|
||||||
import net.minecraft.client.color.item.ItemColors;
|
import net.minecraft.client.color.item.ItemColors;
|
||||||
|
|
|
@ -4,6 +4,15 @@ import java.io.InputStreamReader;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||||
import net.minecraft.client.resources.model.ModelBakery;
|
import net.minecraft.client.resources.model.ModelBakery;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
|
@ -12,13 +21,6 @@ import net.minecraft.server.packs.resources.Resource;
|
||||||
import net.minecraft.server.packs.resources.ResourceManager;
|
import net.minecraft.server.packs.resources.ResourceManager;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.patterns.Patterned;
|
import ru.betterend.patterns.Patterned;
|
||||||
import ru.betterend.world.generator.GeneratorOptions;
|
import ru.betterend.world.generator.GeneratorOptions;
|
||||||
|
|
|
@ -2,15 +2,17 @@ package ru.betterend.mixin.client;
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import net.minecraft.client.renderer.block.model.BlockModelDefinition;
|
|
||||||
import net.minecraft.util.GsonHelper;
|
|
||||||
import net.minecraft.world.level.block.Block;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.block.model.BlockModelDefinition;
|
||||||
|
import net.minecraft.util.GsonHelper;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
import ru.betterend.patterns.BlockPatterned;
|
import ru.betterend.patterns.BlockPatterned;
|
||||||
|
|
||||||
@Mixin(BlockModelDefinition.class)
|
@Mixin(BlockModelDefinition.class)
|
||||||
|
|
|
@ -1,6 +1,14 @@
|
||||||
package ru.betterend.mixin.client;
|
package ru.betterend.mixin.client;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.resources.sounds.AbstractSoundInstance;
|
import net.minecraft.client.resources.sounds.AbstractSoundInstance;
|
||||||
import net.minecraft.client.resources.sounds.SoundInstance;
|
import net.minecraft.client.resources.sounds.SoundInstance;
|
||||||
|
@ -8,12 +16,6 @@ import net.minecraft.client.sounds.MusicManager;
|
||||||
import net.minecraft.sounds.Music;
|
import net.minecraft.sounds.Music;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import ru.betterend.client.ClientOptions;
|
import ru.betterend.client.ClientOptions;
|
||||||
|
|
||||||
@Mixin(MusicManager.class)
|
@Mixin(MusicManager.class)
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
package ru.betterend.mixin.client;
|
package ru.betterend.mixin.client;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import net.minecraft.core.Registry;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import net.minecraft.server.packs.resources.FallbackResourceManager;
|
|
||||||
import net.minecraft.server.packs.resources.Resource;
|
|
||||||
import net.minecraft.world.level.block.Block;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
@ -14,6 +10,12 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
|
import net.minecraft.core.Registry;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.server.packs.resources.FallbackResourceManager;
|
||||||
|
import net.minecraft.server.packs.resources.Resource;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.patterns.BlockPatterned;
|
import ru.betterend.patterns.BlockPatterned;
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ import com.mojang.blaze3d.vertex.VertexBuffer;
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
import com.mojang.blaze3d.vertex.VertexFormat;
|
||||||
import com.mojang.math.Quaternion;
|
import com.mojang.math.Quaternion;
|
||||||
import com.mojang.math.Vector3f;
|
import com.mojang.math.Vector3f;
|
||||||
|
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
import net.minecraft.world.level.block.AnvilBlock;
|
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
|
||||||
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.block.AnvilBlock;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
||||||
import ru.betterend.blocks.basis.EndAnvilBlock;
|
import ru.betterend.blocks.basis.EndAnvilBlock;
|
||||||
|
|
||||||
@Mixin(AnvilBlock.class)
|
@Mixin(AnvilBlock.class)
|
||||||
|
|
|
@ -3,6 +3,14 @@ package ru.betterend.mixin.common;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import net.minecraft.tags.BlockTags;
|
import net.minecraft.tags.BlockTags;
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
@ -16,12 +24,6 @@ import net.minecraft.world.item.crafting.RecipeManager;
|
||||||
import net.minecraft.world.level.block.AnvilBlock;
|
import net.minecraft.world.level.block.AnvilBlock;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import ru.betterend.blocks.basis.EndAnvilBlock;
|
import ru.betterend.blocks.basis.EndAnvilBlock;
|
||||||
import ru.betterend.interfaces.AnvilScreenHandlerExtended;
|
import ru.betterend.interfaces.AnvilScreenHandlerExtended;
|
||||||
import ru.betterend.recipe.builders.AnvilRecipe;
|
import ru.betterend.recipe.builders.AnvilRecipe;
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import net.minecraft.world.entity.ai.attributes.Attribute;
|
|
||||||
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
|
||||||
import net.minecraft.world.item.ArmorItem;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
|
||||||
|
import net.minecraft.world.entity.ai.attributes.Attribute;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
|
||||||
@Mixin(ArmorItem.class)
|
@Mixin(ArmorItem.class)
|
||||||
public interface ArmorItemAccessor {
|
public interface ArmorItemAccessor {
|
||||||
@Accessor("ARMOR_MODIFIER_UUID_PER_SLOT")
|
@Accessor("ARMOR_MODIFIER_UUID_PER_SLOT")
|
||||||
|
|
|
@ -2,11 +2,13 @@ package ru.betterend.mixin.common;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
import net.minecraft.world.level.biome.BiomeGenerationSettings;
|
import net.minecraft.world.level.biome.BiomeGenerationSettings;
|
||||||
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
|
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
|
||||||
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
|
||||||
|
|
||||||
@Mixin(BiomeGenerationSettings.class)
|
@Mixin(BiomeGenerationSettings.class)
|
||||||
public interface BiomeGenerationSettingsAccessor {
|
public interface BiomeGenerationSettingsAccessor {
|
||||||
|
|
|
@ -1,6 +1,14 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Items;
|
import net.minecraft.world.item.Items;
|
||||||
|
@ -11,12 +19,6 @@ import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.storage.loot.LootContext;
|
import net.minecraft.world.level.storage.loot.LootContext;
|
||||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import ru.betterend.item.tool.EndHammerItem;
|
import ru.betterend.item.tool.EndHammerItem;
|
||||||
import ru.betterend.util.MHelper;
|
import ru.betterend.util.MHelper;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
@ -12,10 +18,6 @@ import net.minecraft.world.level.biome.Biome.BiomeCategory;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import ru.betterend.registry.EndBiomes;
|
import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
|
|
|
@ -1,6 +1,16 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
@ -16,14 +26,6 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.spongepowered.asm.mixin.Final;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
import ru.betterend.util.BlocksHelper;
|
import ru.betterend.util.BlocksHelper;
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||||
|
@ -14,11 +20,6 @@ import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.block.state.StateDefinition;
|
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.BlockStateProperties;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
import ru.betterend.util.BlocksHelper;
|
import ru.betterend.util.BlocksHelper;
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
|
@ -10,10 +16,6 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.chunk.ChunkGenerator;
|
import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.level.levelgen.feature.ChorusPlantFeature;
|
import net.minecraft.world.level.levelgen.feature.ChorusPlantFeature;
|
||||||
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.util.BlocksHelper;
|
import ru.betterend.util.BlocksHelper;
|
||||||
import ru.betterend.util.MHelper;
|
import ru.betterend.util.MHelper;
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
import net.minecraft.world.level.chunk.ChunkBiomeContainer;
|
import net.minecraft.world.level.chunk.ChunkBiomeContainer;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import ru.betterend.interfaces.IBiomeArray;
|
import ru.betterend.interfaces.IBiomeArray;
|
||||||
|
|
||||||
@Mixin(ChunkBiomeContainer.class)
|
@Mixin(ChunkBiomeContainer.class)
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Invoker;
|
||||||
|
|
||||||
import net.minecraft.world.level.ItemLike;
|
import net.minecraft.world.level.ItemLike;
|
||||||
import net.minecraft.world.level.block.ComposterBlock;
|
import net.minecraft.world.level.block.ComposterBlock;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.gen.Invoker;
|
|
||||||
|
|
||||||
@Mixin(ComposterBlock.class)
|
@Mixin(ComposterBlock.class)
|
||||||
public interface ComposterBlockAccessor {
|
public interface ComposterBlockAccessor {
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
import net.minecraft.world.entity.player.Player;
|
|
||||||
import net.minecraft.world.inventory.ContainerLevelAccess;
|
|
||||||
import net.minecraft.world.inventory.CraftingMenu;
|
|
||||||
import net.minecraft.world.level.block.CraftingTableBlock;
|
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
@ -11,6 +7,11 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.inventory.ContainerLevelAccess;
|
||||||
|
import net.minecraft.world.inventory.CraftingMenu;
|
||||||
|
import net.minecraft.world.level.block.CraftingTableBlock;
|
||||||
|
|
||||||
@Mixin(CraftingMenu.class)
|
@Mixin(CraftingMenu.class)
|
||||||
public abstract class CraftingMenuMixin {
|
public abstract class CraftingMenuMixin {
|
||||||
@Final
|
@Final
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
import net.minecraft.world.level.chunk.ChunkGenerator;
|
import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.level.dimension.DimensionType;
|
import net.minecraft.world.level.dimension.DimensionType;
|
||||||
import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator;
|
import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator;
|
||||||
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
|
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import ru.betterend.world.generator.BetterEndBiomeSource;
|
import ru.betterend.world.generator.BetterEndBiomeSource;
|
||||||
import ru.betterend.world.generator.GeneratorOptions;
|
import ru.betterend.world.generator.GeneratorOptions;
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,14 @@ package ru.betterend.mixin.common;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.world.Container;
|
import net.minecraft.world.Container;
|
||||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||||
|
@ -12,12 +20,6 @@ import net.minecraft.world.inventory.MenuType;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||||||
import net.minecraft.world.item.enchantment.EnchantmentInstance;
|
import net.minecraft.world.item.enchantment.EnchantmentInstance;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
|
|
||||||
@Mixin(EnchantmentMenu.class)
|
@Mixin(EnchantmentMenu.class)
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import net.minecraft.world.level.ChunkPos;
|
import net.minecraft.world.level.ChunkPos;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
import net.minecraft.world.level.biome.BiomeSource;
|
import net.minecraft.world.level.biome.BiomeSource;
|
||||||
|
@ -7,11 +13,6 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.level.levelgen.WorldgenRandom;
|
import net.minecraft.world.level.levelgen.WorldgenRandom;
|
||||||
import net.minecraft.world.level.levelgen.feature.EndCityFeature;
|
import net.minecraft.world.level.levelgen.feature.EndCityFeature;
|
||||||
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import ru.betterend.world.generator.GeneratorOptions;
|
import ru.betterend.world.generator.GeneratorOptions;
|
||||||
|
|
||||||
@Mixin(EndCityFeature.class)
|
@Mixin(EndCityFeature.class)
|
||||||
|
|
|
@ -1,6 +1,15 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.nbt.NbtUtils;
|
import net.minecraft.nbt.NbtUtils;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
|
@ -10,13 +19,6 @@ import net.minecraft.world.level.levelgen.feature.EndPodiumFeature;
|
||||||
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
||||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings;
|
import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings;
|
||||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
|
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.util.StructureHelper;
|
import ru.betterend.util.StructureHelper;
|
||||||
import ru.betterend.util.WorldDataUtil;
|
import ru.betterend.util.WorldDataUtil;
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
package ru.betterend.mixin.common;
|
package ru.betterend.mixin.common;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import net.minecraft.world.entity.EquipmentSlot;
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
import net.minecraft.world.entity.monster.EnderMan;
|
import net.minecraft.world.entity.monster.EnderMan;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import ru.betterend.effects.EndEnchantments;
|
import ru.betterend.effects.EndEnchantments;
|
||||||
import ru.betterend.effects.EndStatusEffects;
|
import ru.betterend.effects.EndStatusEffects;
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue