update to 1.21
This commit is contained in:
parent
e1eef02be4
commit
3d74cf7a7b
|
@ -1,6 +1,6 @@
|
|||
plugins {
|
||||
id "com.modrinth.minotaur" version "2.+"
|
||||
id 'fabric-loom' version '1.2-SNAPSHOT'
|
||||
id 'fabric-loom' version '1.7-SNAPSHOT'
|
||||
id 'maven-publish'
|
||||
}
|
||||
|
||||
|
@ -45,7 +45,7 @@ processResources {
|
|||
}
|
||||
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
it.options.release = 17
|
||||
it.options.release = 21
|
||||
}
|
||||
|
||||
java {
|
||||
|
@ -54,8 +54,8 @@ java {
|
|||
// If you remove this line, sources will not be generated.
|
||||
withSourcesJar()
|
||||
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
sourceCompatibility = JavaVersion.VERSION_21
|
||||
targetCompatibility = JavaVersion.VERSION_21
|
||||
}
|
||||
|
||||
jar {
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
org.gradle.jvmargs = -Xmx1G
|
||||
|
||||
#Fabric properties
|
||||
minecraft_version=1.20.1
|
||||
yarn_mappings=1.20.1+build.9
|
||||
loader_version=0.14.21
|
||||
minecraft_version=1.21
|
||||
yarn_mappings=1.21+build.7
|
||||
loader_version=0.15.11
|
||||
|
||||
#Fabric
|
||||
fabric_version=0.84.0+1.20.1
|
||||
# Fabric API
|
||||
fabric_version=0.100.4+1.21
|
||||
|
||||
#Mod properties
|
||||
mod_version = 0.9.4
|
||||
mod_version = 0.9.5
|
||||
maven_group = quimufu.structure_item
|
||||
archives_base_name = structure_item
|
||||
|
||||
|
|
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,5 +1,6 @@
|
|||
#Sun Jun 16 00:12:45 CEST 2024
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
package quimufu.structure_item;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.item.TooltipContext;
|
||||
import net.minecraft.component.DataComponentTypes;
|
||||
import net.minecraft.component.type.NbtComponent;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemUsageContext;
|
||||
import net.minecraft.item.tooltip.TooltipType;
|
||||
import net.minecraft.nbt.NbtCompound;
|
||||
import net.minecraft.nbt.NbtElement;
|
||||
import net.minecraft.nbt.NbtHelper;
|
||||
|
@ -25,6 +26,7 @@ import net.minecraft.util.math.BlockPos;
|
|||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.util.math.Vec3i;
|
||||
import net.minecraft.world.World;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
@ -32,18 +34,19 @@ import java.util.Optional;
|
|||
import static quimufu.structure_item.StructureItemMod.LOGGER;
|
||||
|
||||
public class MyItem extends Item {
|
||||
static Item.Settings p = new FabricItemSettings().fireproof().rarity(Rarity.RARE).maxCount(1);
|
||||
static Item.Settings p = new Item.Settings().fireproof().rarity(Rarity.RARE).maxCount(1);
|
||||
|
||||
public MyItem() {
|
||||
super(p);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void appendTooltip(ItemStack itemStack, World world, List<Text> texts, TooltipContext tooltipFlag) {
|
||||
if (!itemStack.hasNbt() || !itemStack.getNbt().contains("structure", 8)) {
|
||||
public void appendTooltip(ItemStack itemStack, Item.TooltipContext context, List<Text> texts, TooltipType tooltipFlag) {
|
||||
NbtComponent nbtComponent = itemStack.get(DataComponentTypes.CUSTOM_DATA);
|
||||
if (nbtComponent == null || nbtComponent.isEmpty() || !nbtComponent.getNbt().contains("structure", 8)) {
|
||||
texts.add((Text.translatable("item.structure_item.item.tooltip.tag.invalid")).formatted(Formatting.RED));
|
||||
} else {
|
||||
NbtCompound tag = itemStack.getNbt();
|
||||
NbtCompound tag = nbtComponent.getNbt();
|
||||
if (tooltipFlag.isAdvanced()) {
|
||||
texts.add(Text.translatable("item.structure_item.item.tooltip.structure"));
|
||||
texts.add(Text.literal(" " + tag.getString("structure")));
|
||||
|
@ -52,7 +55,8 @@ public class MyItem extends Item {
|
|||
texts.add(Text.literal(" " + tag.getString("allowedOn")));
|
||||
}
|
||||
if (tag.contains("offset", 10)) {
|
||||
BlockPos offset = NbtHelper.toBlockPos(tag.getCompound("offset"));
|
||||
|
||||
BlockPos offset = toBlockPosNewOrOld(tag, "offset");
|
||||
texts.add(Text.translatable("item.structure_item.item.tooltip.fixed.offset"));
|
||||
Text c = Text.translatable("item.structure_item.item.tooltip.xyz",
|
||||
Text.literal(String.valueOf(offset.getX())),
|
||||
|
@ -111,6 +115,14 @@ public class MyItem extends Item {
|
|||
|
||||
}
|
||||
|
||||
private static @NotNull BlockPos toBlockPosNewOrOld(NbtCompound tag, String key) {
|
||||
return NbtHelper.toBlockPos(tag, key).orElseGet(() -> toBlockPosOld(tag.getCompound(key)));
|
||||
}
|
||||
|
||||
public static BlockPos toBlockPosOld(NbtCompound nbt) {
|
||||
return new BlockPos(nbt.getInt("X"), nbt.getInt("Y"), nbt.getInt("Z"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult useOnBlock(ItemUsageContext c) {
|
||||
if (!c.getWorld().isClient) {
|
||||
|
@ -120,8 +132,9 @@ public class MyItem extends Item {
|
|||
} else {
|
||||
player = null;
|
||||
}
|
||||
NbtCompound tag = c.getStack().getNbt();
|
||||
if (tag == null) {
|
||||
NbtCompound tag;
|
||||
NbtComponent nbtComponent = c.getStack().get(DataComponentTypes.CUSTOM_DATA);
|
||||
if (nbtComponent == null || (tag = nbtComponent.getNbt()) == null) {
|
||||
Text message =
|
||||
Text.translatable("items.structure.spawner.no.tag");
|
||||
sendPlayerChat(player, message);
|
||||
|
@ -165,15 +178,15 @@ public class MyItem extends Item {
|
|||
sendPlayerChat(player, message);
|
||||
return ActionResult.FAIL;
|
||||
}
|
||||
Optional<StructureTemplate> xOpt = ((ServerWorld) c.getWorld()).getStructureTemplateManager().getTemplate(structureResourceID);
|
||||
if (xOpt.isEmpty()) {
|
||||
Optional<StructureTemplate> optionalStructureTemplate = ((ServerWorld) c.getWorld()).getStructureTemplateManager().getTemplate(structureResourceID);
|
||||
if (optionalStructureTemplate.isEmpty()) {
|
||||
Text message =
|
||||
Text.translatable("items.structure.spawner.structure.nonexistent",
|
||||
Text.literal(structureResourceID.toString()));
|
||||
sendPlayerChat(player, message);
|
||||
return ActionResult.FAIL;
|
||||
}
|
||||
StructureTemplate x = xOpt.get();
|
||||
StructureTemplate structureTemplate = optionalStructureTemplate.get();
|
||||
|
||||
BlockRotation rotation = BlockRotation.NONE;
|
||||
if (tag.contains("rotate", NbtElement.STRING_TYPE)) {
|
||||
|
@ -195,10 +208,10 @@ public class MyItem extends Item {
|
|||
|
||||
BlockPos loc = c.getBlockPos().offset(c.getSide());
|
||||
if (tag.contains("offset", 10)) {
|
||||
BlockPos offset = NbtHelper.toBlockPos(tag.getCompound("offset"));
|
||||
BlockPos offset = toBlockPosNewOrOld(tag, "offset");
|
||||
loc = loc.add(offset);
|
||||
|
||||
Vec3i size = x.getSize();
|
||||
Vec3i size = structureTemplate.getSize();
|
||||
switch (rotation) {
|
||||
case CLOCKWISE_90 -> loc = loc.add(new Vec3i(size.getX() - 1, 0, 0));
|
||||
case CLOCKWISE_180 -> loc = loc.add(new Vec3i(size.getX() - 1, 0, size.getZ() - 1));
|
||||
|
@ -209,7 +222,7 @@ public class MyItem extends Item {
|
|||
try {
|
||||
StructureOffsetSettings offset = StructureOffsetSettings.ofTag(tag.getCompound("offsetV2"));
|
||||
offset.setRotation(rotation);
|
||||
Vec3i size = x.getSize();
|
||||
Vec3i size = structureTemplate.getSize();
|
||||
loc = loc.add(offset.getEffective(direction, size));
|
||||
} catch (Exception e) {
|
||||
Text message =
|
||||
|
@ -221,7 +234,7 @@ public class MyItem extends Item {
|
|||
Direction direction = c.getSide().getOpposite();
|
||||
StructureOffsetSettings offset = StructureOffsetSettings.dynamic();
|
||||
offset.setRotation(rotation);
|
||||
Vec3i size = x.getSize();
|
||||
Vec3i size = structureTemplate.getSize();
|
||||
loc = loc.add(offset.getEffective(direction, size));
|
||||
}
|
||||
|
||||
|
@ -252,11 +265,11 @@ public class MyItem extends Item {
|
|||
|
||||
|
||||
ps.setWorld(c.getWorld())
|
||||
.setSize(x.getSize())
|
||||
.setSize(structureTemplate.getSize())
|
||||
.setMirror(BlockMirror.NONE)
|
||||
.setRotation(rotation);
|
||||
try {
|
||||
if (x.place((ServerWorld) c.getWorld(), loc, BlockPos.ORIGIN, ps, c.getWorld().getRandom(), 2)) {
|
||||
if (structureTemplate.place((ServerWorld) c.getWorld(), loc, BlockPos.ORIGIN, ps, c.getWorld().getRandom(), 2)) {
|
||||
c.getStack().decrement(1);
|
||||
return ActionResult.SUCCESS;
|
||||
}
|
||||
|
@ -307,7 +320,6 @@ public class MyItem extends Item {
|
|||
private static void sendPlayerChat(ServerPlayerEntity player, Text message) {
|
||||
if (player != null)
|
||||
player.sendMessage(message, false);
|
||||
LOGGER.info(message.getContent());
|
||||
}
|
||||
|
||||
private Block getBlock(String loc) {
|
||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.structure.StructureTemplate;
|
|||
import net.minecraft.structure.processor.BlockIgnoreStructureProcessor;
|
||||
import net.minecraft.structure.processor.StructureProcessor;
|
||||
import net.minecraft.structure.processor.StructureProcessorType;
|
||||
import net.minecraft.util.math.BlockBox;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Box;
|
||||
import net.minecraft.util.math.Vec3i;
|
||||
|
@ -31,7 +32,7 @@ public class MyPlacementSettings extends StructurePlacementData {
|
|||
}
|
||||
|
||||
public void forbidOverwrite(List<Block> blocks) {
|
||||
if (blocks.size() == 0) {
|
||||
if (blocks.isEmpty()) {
|
||||
blacklist = null;
|
||||
return;
|
||||
}
|
||||
|
@ -65,9 +66,9 @@ public class MyPlacementSettings extends StructurePlacementData {
|
|||
public StructureTemplate.StructureBlockInfo process(WorldView world, BlockPos pos, BlockPos pivot, StructureTemplate.StructureBlockInfo originalBlockInfo, StructureTemplate.StructureBlockInfo currentBlockInfo, StructurePlacementData data) {
|
||||
if (entitiesWithinAABB == null) {
|
||||
if (shouldReplaceEntities()) {
|
||||
entitiesWithinAABB = ((ServerWorld) world).getNonSpectatingEntities(PlayerEntity.class, new Box(pos.subtract(size), pos.add(size)));
|
||||
entitiesWithinAABB = ((ServerWorld) world).getNonSpectatingEntities(PlayerEntity.class, Box.enclosing(pos.subtract(size), pos.add(size)));
|
||||
} else {
|
||||
entitiesWithinAABB = ((ServerWorld) world).getNonSpectatingEntities(Entity.class, new Box(pos.subtract(size), pos.add(size)));
|
||||
entitiesWithinAABB = ((ServerWorld) world).getNonSpectatingEntities(Entity.class, Box.enclosing(pos.subtract(size), pos.add(size)));
|
||||
}
|
||||
}
|
||||
BlockPos posToCheck;
|
||||
|
|
Loading…
Reference in New Issue
Block a user