Skip to content

Commit 5237da4

Browse files
committed
Updated to ItemMods 2.0.0-alpha.0
Took 1 hour 4 minutes
1 parent 0d783cb commit 5237da4

File tree

15 files changed

+266
-389
lines changed

15 files changed

+266
-389
lines changed

custom-ore-generator/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
<dependencies>
2323
<dependency>
24-
<groupId>com.github.codedoctorde</groupId>
24+
<groupId>dev.linwood</groupId>
2525
<artifactId>ItemMods</artifactId>
2626
<version>${ItemMods.version}</version>
2727
<scope>provided</scope>

custom-ore-generator/src/main/java/de/derfrzocker/custom/ore/generator/impl/customdata/ItemModsCustomData.java

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@
2525

2626
package de.derfrzocker.custom.ore.generator.impl.customdata;
2727

28-
import com.github.codedoctorde.itemmods.ItemMods;
29-
import com.github.codedoctorde.itemmods.api.block.CustomBlock;
30-
import com.github.codedoctorde.itemmods.api.block.CustomBlockManager;
31-
import com.github.codedoctorde.itemmods.config.BlockConfig;
3228
import de.derfrzocker.custom.ore.generator.api.Info;
3329
import de.derfrzocker.custom.ore.generator.api.OreConfig;
3430
import de.derfrzocker.custom.ore.generator.api.customdata.CustomDataApplier;
@@ -41,6 +37,12 @@
4137
import de.derfrzocker.custom.ore.generator.impl.v1_16_R3.customdata.ItemModsApplier_v1_16_R3;
4238
import de.derfrzocker.custom.ore.generator.impl.v1_17_R1.customdata.ItemModsApplier_v1_17_R1;
4339
import de.derfrzocker.spigot.utils.Version;
40+
import dev.linwood.itemmods.ItemMods;
41+
import dev.linwood.itemmods.api.block.CustomBlock;
42+
import dev.linwood.itemmods.pack.ItemModsPack;
43+
import dev.linwood.itemmods.pack.PackManager;
44+
import dev.linwood.itemmods.pack.PackObject;
45+
import dev.linwood.itemmods.pack.asset.BlockAsset;
4446
import org.apache.commons.lang.Validate;
4547
import org.bukkit.Bukkit;
4648
import org.bukkit.Material;
@@ -49,7 +51,6 @@
4951

5052
import java.util.Collections;
5153
import java.util.HashSet;
52-
import java.util.List;
5354
import java.util.Set;
5455
import java.util.function.Function;
5556

@@ -61,21 +62,19 @@ public ItemModsCustomData(@NotNull final Function<String, Info> infoFunction) {
6162

6263
@Override
6364
public boolean canApply(@NotNull final OreConfig oreConfig) {
64-
final CustomBlockManager customBlockManager = ItemMods.getPlugin().getCustomBlockManager();
65-
final List<BlockConfig> blockConfigs = customBlockManager.getBlocks();
66-
67-
return blockConfigs.stream().anyMatch(blockConfig -> blockConfig.getBlock().getMaterial() == oreConfig.getMaterial());
65+
return oreConfig.getMaterial() == Material.SPAWNER;
6866
}
6967

7068
@Override
7169
public boolean isValidCustomData(@NotNull final Object customData, @NotNull final OreConfig oreConfig) {
7270
if (!(customData instanceof String))
7371
return false;
7472

75-
final CustomBlockManager customBlockManager = ItemMods.getPlugin().getCustomBlockManager();
76-
final List<BlockConfig> blockConfigs = customBlockManager.getBlocks();
73+
if (oreConfig.getMaterial() != Material.SPAWNER) {
74+
return false;
75+
}
7776

78-
return blockConfigs.stream().filter(blockConfig -> blockConfig.getBlock().getMaterial() == oreConfig.getMaterial()).anyMatch(blockConfig -> blockConfig.getName().equals(customData));
77+
return new PackObject((String) customData).getBlock() != null;
7978
}
8079

8180
@NotNull
@@ -88,20 +87,15 @@ public Object normalize(@NotNull final Object customData, @NotNull final OreConf
8887
public boolean hasCustomData(@NotNull final BlockState blockState) {
8988
Validate.notNull(blockState, "BlockState can not be null");
9089

91-
final CustomBlockManager customBlockManager = ItemMods.getPlugin().getCustomBlockManager();
92-
93-
return customBlockManager.getCustomBlock(blockState.getLocation()) != null;
90+
return new CustomBlock(blockState.getLocation()).getConfig() != null;
9491
}
9592

9693
@NotNull
9794
@Override
9895
public String getCustomData(@NotNull final BlockState blockState) {
9996
Validate.isTrue(hasCustomData(blockState), "The given BlockState '" + blockState.getType() + ", " + blockState.getLocation() + "' can not have the CustomData '" + getName() + "'");
10097

101-
final CustomBlockManager customBlockManager = ItemMods.getPlugin().getCustomBlockManager();
102-
final CustomBlock customBlock = customBlockManager.getCustomBlock(blockState.getLocation());
103-
104-
return customBlock.getConfig().getName();
98+
return new CustomBlock(blockState.getLocation()).getType();
10599
}
106100

107101
@NotNull
@@ -130,10 +124,18 @@ protected CustomDataApplier getCustomDataApplier0() {
130124
public Set<Object> getPossibleValues(@NotNull final Material material) {
131125
Validate.notNull(material, "Material can not be null");
132126

133-
final CustomBlockManager customBlockManager = ItemMods.getPlugin().getCustomBlockManager();
127+
if (material != Material.SPAWNER) {
128+
return new HashSet<>();
129+
}
130+
131+
final PackManager packManager = ItemMods.getPackManager();
134132
final Set<Object> set = new HashSet<>();
135133

136-
customBlockManager.getBlocks().stream().filter(blockConfig -> blockConfig.getBlock().getMaterial() == material).forEach(blockConfig -> set.add(blockConfig.getName()));
134+
for (ItemModsPack pack : packManager.getPacks()) {
135+
for (BlockAsset blockAsset : pack.getBlocks()) {
136+
set.add(pack.getName() + ":" + blockAsset.getName());
137+
}
138+
}
137139

138140
return Collections.unmodifiableSet(set);
139141
}

impl/v1_14_R1/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
<dependencies>
1616
<dependency>
17-
<groupId>com.github.codedoctorde</groupId>
17+
<groupId>dev.linwood</groupId>
1818
<artifactId>ItemMods</artifactId>
1919
<version>${ItemMods.version}</version>
2020
<scope>provided</scope>

impl/v1_14_R1/src/main/java/de/derfrzocker/custom/ore/generator/impl/v1_14_R1/customdata/ItemModsApplier_v1_14_R1.java

Lines changed: 39 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,31 @@
2525

2626
package de.derfrzocker.custom.ore.generator.impl.v1_14_R1.customdata;
2727

28-
import com.github.codedoctorde.itemmods.ItemMods;
29-
import com.github.codedoctorde.itemmods.config.ArmorStandBlockConfig;
30-
import com.github.codedoctorde.itemmods.config.BlockConfig;
31-
import com.mojang.brigadier.exceptions.CommandSyntaxException;
3228
import de.derfrzocker.custom.ore.generator.api.OreConfig;
3329
import de.derfrzocker.custom.ore.generator.api.customdata.CustomData;
3430
import de.derfrzocker.custom.ore.generator.api.customdata.CustomDataApplier;
31+
import dev.linwood.itemmods.ItemMods;
32+
import dev.linwood.itemmods.pack.PackObject;
33+
import dev.linwood.itemmods.pack.asset.BlockAsset;
34+
import dev.linwood.itemmods.pack.asset.raw.ModelAsset;
3535
import net.minecraft.server.v1_14_R1.BlockPosition;
3636
import net.minecraft.server.v1_14_R1.EntityArmorStand;
37+
import net.minecraft.server.v1_14_R1.EntityTypes;
3738
import net.minecraft.server.v1_14_R1.EnumItemSlot;
3839
import net.minecraft.server.v1_14_R1.GeneratorAccess;
39-
import net.minecraft.server.v1_14_R1.MojangsonParser;
40+
import net.minecraft.server.v1_14_R1.IRegistry;
41+
import net.minecraft.server.v1_14_R1.Item;
42+
import net.minecraft.server.v1_14_R1.ItemStack;
43+
import net.minecraft.server.v1_14_R1.MinecraftKey;
44+
import net.minecraft.server.v1_14_R1.MobSpawnerAbstract;
45+
import net.minecraft.server.v1_14_R1.MobSpawnerData;
4046
import net.minecraft.server.v1_14_R1.NBTTagCompound;
4147
import net.minecraft.server.v1_14_R1.TileEntity;
48+
import net.minecraft.server.v1_14_R1.TileEntityMobSpawner;
4249
import org.apache.commons.lang.Validate;
4350
import org.bukkit.NamespacedKey;
44-
import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemStack;
4551
import org.bukkit.craftbukkit.v1_14_R1.persistence.CraftPersistentDataContainer;
4652
import org.bukkit.craftbukkit.v1_14_R1.persistence.CraftPersistentDataTypeRegistry;
47-
import org.bukkit.craftbukkit.v1_14_R1.util.CraftChatMessage;
4853
import org.bukkit.persistence.PersistentDataType;
4954
import org.jetbrains.annotations.NotNull;
5055

@@ -74,70 +79,43 @@ public void apply(@NotNull final OreConfig oreConfig, @NotNull final Object loca
7479
return; //TODO maybe throw exception?
7580

7681
final String name = (String) objectOptional.get();
77-
final Optional<BlockConfig> blockConfigOptional = ItemMods.getPlugin().getCustomBlockManager().getBlocks().stream().filter(blockConfig -> blockConfig.getName().equals(name)).findAny();
82+
PackObject packObject = new PackObject(name);
83+
BlockAsset blockAsset = packObject.getBlock();
7884

79-
if (!blockConfigOptional.isPresent())
85+
if (blockAsset == null) {
8086
return; //TODO maybe throw exception?
87+
}
88+
89+
ModelAsset modelAsset = packObject.getModel();
8190

82-
final BlockConfig blockConfig = blockConfigOptional.get();
83-
final ArmorStandBlockConfig armorStandBlockConfig = blockConfig.getArmorStand();
84-
85-
if (armorStandBlockConfig != null) {
86-
final EntityArmorStand entityArmorStand = new EntityArmorStand(generatorAccess.getMinecraftWorld(), blockPosition.getX() + 0.5, blockPosition.getY(), blockPosition.getZ() + 0.5);
87-
88-
entityArmorStand.setSmall(armorStandBlockConfig.isSmall());
89-
entityArmorStand.setMarker(armorStandBlockConfig.isMarker());
90-
entityArmorStand.setInvulnerable(armorStandBlockConfig.isInvulnerable());
91-
entityArmorStand.setCustomNameVisible(armorStandBlockConfig.isCustomNameVisible());
92-
entityArmorStand.setCustomName(CraftChatMessage.fromStringOrNull(armorStandBlockConfig.getCustomName()));
93-
entityArmorStand.setInvisible(armorStandBlockConfig.isInvisible());
94-
entityArmorStand.getScoreboardTags().add(blockConfig.getTag());
95-
entityArmorStand.setNoGravity(true);
96-
entityArmorStand.setSilent(true);
97-
entityArmorStand.setBasePlate(armorStandBlockConfig.isBasePlate());
98-
entityArmorStand.setSlot(EnumItemSlot.HEAD, CraftItemStack.asNMSCopy(armorStandBlockConfig.getHelmet()));
99-
entityArmorStand.setSlot(EnumItemSlot.CHEST, CraftItemStack.asNMSCopy(armorStandBlockConfig.getChestplate()));
100-
entityArmorStand.setSlot(EnumItemSlot.LEGS, CraftItemStack.asNMSCopy(armorStandBlockConfig.getLeggings()));
101-
entityArmorStand.setSlot(EnumItemSlot.FEET, CraftItemStack.asNMSCopy(armorStandBlockConfig.getBoots()));
102-
entityArmorStand.setSlot(EnumItemSlot.MAINHAND, CraftItemStack.asNMSCopy(armorStandBlockConfig.getMainHand()));
103-
entityArmorStand.setSlot(EnumItemSlot.OFFHAND, CraftItemStack.asNMSCopy(armorStandBlockConfig.getOffHand()));
104-
105-
// Fixing ArmorStand rotating issue, I have now idea why the yaw and/or pitch is another value than 0.
106-
// That needs a more detailed investigation, which of the above methods changes the yaw and/or pitch,
107-
// but for now it works.
108-
entityArmorStand.yaw = 0;
109-
entityArmorStand.pitch = 0;
110-
111-
entityArmorStand.getBukkitEntity().getPersistentDataContainer().set(new NamespacedKey(ItemMods.getPlugin(), "type"), PersistentDataType.STRING, blockConfig.getTag());
112-
113-
generatorAccess.addEntity(entityArmorStand);
91+
if (modelAsset == null) {
92+
return; //TODO maybe throw exception?
11493
}
11594

11695
final TileEntity tileEntity = generatorAccess.getTileEntity(blockPosition);
11796

11897
if (tileEntity != null) {
119-
if (blockConfig.getData() != null) {
120-
final NBTTagCompound nbtTagCompound = new NBTTagCompound();
121-
tileEntity.save(nbtTagCompound);
122-
123-
try {
124-
final NBTTagCompound nbtTagCompound1 = MojangsonParser.parse(blockConfig.getData());
125-
126-
nbtTagCompound.a(nbtTagCompound1);
127-
} catch (final CommandSyntaxException e) {
128-
throw new RuntimeException("Error while parsing String to NBTTagCompound", e);
129-
}
130-
131-
tileEntity.load(nbtTagCompound);
98+
TileEntityMobSpawner spawnerBlock = (TileEntityMobSpawner) tileEntity;
99+
MobSpawnerAbstract spawner = spawnerBlock.getSpawner();
100+
spawner.requiredPlayerRange = 0;
101+
spawner.spawnCount = 0;
102+
103+
EntityArmorStand armorStand = new EntityArmorStand(EntityTypes.ARMOR_STAND, null);
104+
Item item = IRegistry.ITEM.get(new MinecraftKey(modelAsset.getFallbackTexture().getKey().toString()));
105+
ItemStack itemStack = new ItemStack(item);
106+
NBTTagCompound compoundTag = itemStack.getOrCreateTag();
107+
compoundTag.setInt("CustomModelData", packObject.getCustomModel());
108+
armorStand.setSilent(true);
109+
armorStand.setSlot(EnumItemSlot.MAINHAND, itemStack);
110+
111+
NBTTagCompound saved = new NBTTagCompound();
112+
armorStand.save(saved);
113+
spawner.spawnData = new MobSpawnerData(1, saved);
114+
if (tileEntity.persistentDataContainer == null) {
115+
tileEntity.persistentDataContainer = new CraftPersistentDataContainer(DATA_TYPE_REGISTRY);
132116
}
133117

134-
if (blockConfig.getTag() != null) {
135-
if (tileEntity.persistentDataContainer == null) {
136-
tileEntity.persistentDataContainer = new CraftPersistentDataContainer(DATA_TYPE_REGISTRY);
137-
}
138-
139-
tileEntity.persistentDataContainer.set(new NamespacedKey(ItemMods.getPlugin(), "type"), PersistentDataType.STRING, blockConfig.getTag());
140-
}
118+
tileEntity.persistentDataContainer.set(new NamespacedKey(ItemMods.getPlugin(), "custom_block_type"), PersistentDataType.STRING, packObject.toString());
141119

142120
generatorAccess.w(blockPosition).removeTileEntity(blockPosition);
143121
generatorAccess.w(blockPosition).setTileEntity(blockPosition, tileEntity);

impl/v1_15_R1/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
<dependencies>
1616
<dependency>
17-
<groupId>com.github.codedoctorde</groupId>
17+
<groupId>dev.linwood</groupId>
1818
<artifactId>ItemMods</artifactId>
1919
<version>${ItemMods.version}</version>
2020
<scope>provided</scope>

0 commit comments

Comments
 (0)