Bladeren bron

Add PackRepositoryHooks and DyeColorHooks

shedaniel 4 jaren geleden
bovenliggende
commit
61fe2fa932

+ 40 - 0
common/src/main/java/me/shedaniel/architectury/hooks/DyeColorHooks.java

@@ -0,0 +1,40 @@
+/*
+ * Copyright 2020 shedaniel
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package me.shedaniel.architectury.hooks;
+
+import me.shedaniel.architectury.ArchitecturyPopulator;
+import me.shedaniel.architectury.Populatable;
+import net.minecraft.world.item.DyeColor;
+
+public class DyeColorHooks {
+    private DyeColorHooks() {}
+    
+    @Populatable
+    private static final Impl IMPL = null;
+    
+    public static int getColorValue(DyeColor color) {
+        return IMPL.getColorValue(color);
+    }
+    
+    public interface Impl {
+        int getColorValue(DyeColor color);
+    }
+    
+    static {
+        ArchitecturyPopulator.populate();
+    }
+}

+ 41 - 0
common/src/main/java/me/shedaniel/architectury/hooks/PackRepositoryHooks.java

@@ -0,0 +1,41 @@
+/*
+ * Copyright 2020 shedaniel
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package me.shedaniel.architectury.hooks;
+
+import me.shedaniel.architectury.ArchitecturyPopulator;
+import me.shedaniel.architectury.Populatable;
+import net.minecraft.server.packs.repository.PackRepository;
+import net.minecraft.server.packs.repository.RepositorySource;
+
+public class PackRepositoryHooks {
+    private PackRepositoryHooks() {}
+    
+    @Populatable
+    private static final Impl IMPL = null;
+    
+    public static void addSource(PackRepository repository, RepositorySource source) {
+        IMPL.addSource(repository, source);
+    }
+    
+    public interface Impl {
+        void addSource(PackRepository repository, RepositorySource source);
+    }
+    
+    static {
+        ArchitecturyPopulator.populate();
+    }
+}

+ 27 - 0
fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/DyeColorHooksImpl.java

@@ -0,0 +1,27 @@
+/*
+ * Copyright 2020 shedaniel
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package me.shedaniel.architectury.hooks.fabric;
+
+import me.shedaniel.architectury.hooks.DyeColorHooks;
+import net.minecraft.world.item.DyeColor;
+
+public class DyeColorHooksImpl implements DyeColorHooks.Impl {
+    @Override
+    public int getColorValue(DyeColor color) {
+        return color.textureDiffuseColor;
+    }
+}

+ 34 - 0
fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/PackRepositoryHooksImpl.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright 2020 shedaniel
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package me.shedaniel.architectury.hooks.fabric;
+
+import com.google.common.collect.ImmutableSet;
+import me.shedaniel.architectury.hooks.PackRepositoryHooks;
+import net.minecraft.server.packs.repository.PackRepository;
+import net.minecraft.server.packs.repository.RepositorySource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PackRepositoryHooksImpl implements PackRepositoryHooks.Impl {
+    @Override
+    public void addSource(PackRepository repository, RepositorySource source) {
+        List<RepositorySource> set = new ArrayList<>(repository.sources);
+        set.add(source);
+        repository.sources = ImmutableSet.copyOf(set);
+    }
+}

+ 4 - 1
fabric/src/main/resources/architectury.accessWidener

@@ -47,4 +47,7 @@ accessible field net/minecraft/world/level/block/state/BlockBehaviour$Properties
 mutable field net/minecraft/world/level/block/state/BlockBehaviour$Properties emissiveRendering Lnet/minecraft/world/level/block/state/BlockBehaviour$StatePredicate;
 accessible field net/minecraft/world/level/block/state/BlockBehaviour$Properties dynamicShape Z
 mutable field net/minecraft/world/level/block/state/BlockBehaviour$Properties dynamicShape Z
-accessible method net/minecraft/world/entity/Entity getEncodeId ()Ljava/lang/String;
+accessible method net/minecraft/world/entity/Entity getEncodeId ()Ljava/lang/String;
+accessible field net/minecraft/server/packs/repository/PackRepository sources Ljava/util/Set;
+mutable field net/minecraft/server/packs/repository/PackRepository sources Ljava/util/Set;
+accessible field net/minecraft/world/item/DyeColor textureDiffuseColor I

+ 27 - 0
forge/src/main/java/me/shedaniel/architectury/hooks/forge/DyeColorHooksImpl.java

@@ -0,0 +1,27 @@
+/*
+ * Copyright 2020 shedaniel
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package me.shedaniel.architectury.hooks.forge;
+
+import me.shedaniel.architectury.hooks.DyeColorHooks;
+import net.minecraft.item.DyeColor;
+
+public class DyeColorHooksImpl implements DyeColorHooks.Impl {
+    @Override
+    public int getColorValue(DyeColor dyeColor) {
+        return dyeColor.getColorValue();
+    }
+}

+ 28 - 0
forge/src/main/java/me/shedaniel/architectury/hooks/forge/PackRepositoryHooksImpl.java

@@ -0,0 +1,28 @@
+/*
+ * Copyright 2020 shedaniel
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package me.shedaniel.architectury.hooks.forge;
+
+import me.shedaniel.architectury.hooks.PackRepositoryHooks;
+import net.minecraft.resources.IPackFinder;
+import net.minecraft.resources.ResourcePackList;
+
+public class PackRepositoryHooksImpl implements PackRepositoryHooks.Impl{
+    @Override
+    public void addSource(ResourcePackList resourcePackList, IPackFinder iPackFinder) {
+        resourcePackList.addPackFinder(iPackFinder);
+    }
+}